5

struts2 アプリケーションでタイルを使用しています。基本レイアウトを定義する際に、属性「scriptFile」を定義しました。

<definition name="baseLayout" template="/application/base-layout.jsp" >
    ... 
</definition>

<definition name="custom.tiles" extends="baseLayout">
    <put-attribute name="scriptFile" value="js/custom-script.js"></put-attribute>
</definition>

開発者がタイル定義ファイル「tiles.xml」で「scriptFile」を提供する場合、このスクリプト ファイルは次の行を使用して含める必要があります。

<script language="javascript" src="<tiles:insertAttribute name="scriptFile"></tiles:insertAttribute>"></script>

ただし、scriptFile 属性が定義されていない場合、この行はスキップする必要があります。

タイル内の「scriptFile」属性の存在を確認するにはどうすればよいですか。これを行うためのより良い方法はありますか?

4

4 に答える 4

3

私は試した

<t:useAttribute name="scriptFile" id="script" classname="java.util.List" ignore="true"/>
<%
    if(script != null) {
        ... include script
    } 
%>

ここでも JSTL を使用できます。

于 2012-11-13T10:07:38.373 に答える
1

defaultValue属性を使用して、同様の問題を解決できました。これにより、属性が存在しない場合でも例外は発生しません。この場合、ページに追加の JavaScript を含める必要がない場合、タイル テンプレートは空の文字列を追加するだけです。

JSP

<tiles:insertDefinition name="portalTemplate">

    <tiles:putAttribute name="body">
        <h1>Body</h1>
    </tiles:putAttribute>  

    <tiles:putAttribute name="js">
        <script src="script.js"></script>
    </tiles:putAttribute>   
</tiles:insertDefinition>

タイル テンプレート JSP

<html>
<body>
   <tiles:insertAttribute name="body"/>
   <script src="/public/libs/jquery/jquery-2.1.1.min.js"></script>

   <!-- Include extra JS after JQuery -->
   <tiles:insertAttribute name="js" defaultValue=""/>
</body>
</html>
于 2014-07-18T10:08:04.013 に答える
0

ignore属性を使用するだけ

<script language="javascript" src="<tiles:insertAttribute name='scriptFile'  ignore='true'/>"></script>

scriptFileあなたの定義を入れないでください。

アップデート

getAsStringレイアウトでタグを使用するのはどうですか

<tiles:getAsString name="jscript" ignore="true" />

定義では、エスケープされたスクリプトタグ全体を配置します。

<put-attribute name="jscript" value="&lt;script src='js/custom-script.js' type='text/javascript'>&lt;/script>" />
于 2012-11-13T09:16:34.340 に答える