2016-08-25 27 views
0

org.apache.tiles.jsp.taglib.NoSuchAttributeExceptionが発生しました:属性 'banner'が見つかりません。タイルプロジェクトを実行中は例外です。以下はコードです。インターネットから1つのプロジェクトをダウンロードして実行しました。それは正常に動作していると私は両方のプロジェクトでの違いを見つけることはありません。それでも、コードの下で例外がスローされています。お知らせ下さい。ストラットでタイルを作成中にNoSuchAttributeExceptionを取得する2

tiles.xml

<?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE tiles-definitions PUBLIC 
      "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" 
      "http://tiles.apache.org/dtds/tiles-config_2_0.dtd"> 


<tiles-definitions> 
    <definition name="baseLayout" template="/home.jsp"> 
     <put-attribute name="title" value="Receipe Maker"/> 
     <put-attribute name="banner" value="/banner.jsp"/> 
     <put-attribute name="menu" value="/menu.jsp"/> 
     <put-attribute name="body" value="/about.jsp" /> 
     <put-attribute name="footer" value="/footer.jsp"/> 
    </definition> 

    <definition name="teaLayout" extends="baseLayout"> 
     <put-attribute name="title" value="Tea Maker" /> 
     <put-attribute name="body" value="/tea.jsp" /> 
    </definition> 

    <definition name="coffeeLayout" extends="baseLayout"> 
     <put-attribute name="title" value="Coffee Maker" /> 
     <put-attribute name="body" value="/coffee.jsp" /> 
    </definition> 

    <definition name="milkShakeLayout" extends="baseLayout"> 
     <put-attribute name="title" value="Milk Shake Maker" /> 
     <put-attribute name="body" value="/milk-shake.jsp" /> 
    </definition> 

</tiles-definitions> 

web.xmlの

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5"> 

    <display-name>Archetype Created Web Application</display-name> 

    <context-param> 
     <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name> 
     <param-value>/WEB-INF/tiles.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> 
    </listener> 

    <filter> 
     <filter-name>struts2</filter-name> 
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <welcome-file-list> 
     <welcome-file>home.jsp</welcome-file> 
    </welcome-file-list> 

</web-app> 

struts.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 
    "http://struts.apache.org/dtds/struts-2.5.dtd"> 
<struts> 
    <constant name="struts.devMode" value="true" /> 
    <package name="default" extends="struts-default"> 
     <result-types> 
      <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> 
     </result-types> 
     <action name="*Menu" method="{1}" class="com.practice.tiles.MenuAction"> 
      <result name="home" type="tiles">home</result> 
      <result name="tea" type="tiles">tea</result> 
      <result name="coffee" type="tiles">coffee</result> 
      <result name="milkShake" type="tiles">milk-shake</result> 
     </action> 
    </package> 
</struts> 

MenuAction.java

package com.practice.tiles; 

import com.opensymphony.xwork2.ActionSupport; 

public class MenuAction extends ActionSupport { 

    /** */ 
    private static final long serialVersionUID = -7471860198571879105L; 

    public String home() { 
     return "home"; 
    } 

    public String tea() { 
     return "tea"; 
    } 

    public String coffee() { 
     return "coffee"; 
    } 

    public String milkShake() { 
     return "milk-shake"; 
    } 

} 

Maven Dependencies

Project Structure

+1

これは役に立ちます。http://stackoverflow.com/questions/15752519/attribute-not-foundnosuchattributeexception-in-tiles-with-spring – Vel

+0

ありがとうございました。私はそれを動作させるために行った変更を投稿します。 –

答えて

0

私は問題を解決するには、以下の変更を行う必要があります。

まず、私はたbaselayoutを作成し、それを直接使用しないでください。今tiles.xmlはコードの下のようになります。

<tiles-definitions> 
<definition name="baseLayout" template="/baseLayout.jsp"> 
    <put-attribute name="title" value="Receipe Maker"/> 
    <put-attribute name="banner" value="/banner.jsp"/> 
    <put-attribute name="menu" value="/menu.jsp"/> 
    <put-attribute name="body" value="/about.jsp" /> 
    <put-attribute name="footer" value="/footer.jsp"/> 
</definition> 

<definition name="home" extends="baseLayout"> 
    <put-attribute name="title" value="Home"/> 
    <put-attribute name="body" value="/home.jsp" /> 
</definition> 

<definition name="tea" extends="baseLayout"> 
    <put-attribute name="title" value="Tea Maker" /> 
    <put-attribute name="body" value="/tea.jsp" /> 
</definition> 

<definition name="coffee" extends="baseLayout"> 
    <put-attribute name="title" value="Coffee Maker" /> 
    <put-attribute name="body" value="/coffee.jsp" /> 
</definition> 

<definition name="milkShake" extends="baseLayout"> 
    <put-attribute name="title" value="Milk Shake Maker" /> 
    <put-attribute name="body" value="/milk-shake.jsp" /> 
</definition> 

</tiles-definitions> 

第二に、struts.xmlでの確認結果の値がtiles.xmlで定義要素の属性値と一致する必要がありますstruts.xmlで、例えば 、結果タグは:<result name="teaValue" type="tiles">tea</result>

実行されたアクションメソッドによって返されます。teaは、タイル定義の名前です。

これで、今は動作しています。

+0

なぜ 'NoSuchAttributeException'がスローされるのか説明しませんでした。 –

関連する問題