1

JSPページのBeanからデフォルト値を取得しようとしていますが、値を抽出するための式を取得できません。私が使用しているJSPの例は次のとおりです。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
    <head>
        <title> Testing OGNL conversions </title>
    </head>
  <body>
       The data stored is
       <s:property value="dataField" /><br/>
       The property of thisdata is 
       <s:property value="thisdata" default="%{dataField}" /><br/>
       <s:property value="dataField" />
  </body>
</html>

次の出力が得られます

The data stored is YES 
The property of thisdata is %{dataField} 
YES 

struts.xmlとクラスが正しいと仮定すると(YESが出力されているので、期待どおりになります)dataFieldからプルするデフォルト値を取得するにはどうすればよいですか(はい、愚かな名前は知っていますが、テストコードの場合は私のためにenouphを動作させます)

dataFieldはBeanに存在しますが、thisdataは存在しません(これは、デフォルト値を出力できるようにするために行われます)

4

2 に答える 2

4

プロパティタグのデフォルトパラメータは、OGNLでは評価されません。

したがって、struts if / elseif / elseタグ(または同等のJSTL)を使用できます。

    <s:if test="somevar1 == null">
        <s:property value="someVar2"/>
    </s:if>
    <s:else>
        <s:property value="someVar1"/>
    </s:else>

OGNLはvalue属性で評価されるため、ターナリは多くのスペースを節約します。

<s:property value="somevar1 == null?someVar2:someVar1"/>

さらに注意してください...プロパティタグのvalue属性は、最初はアクションクラスに設定されているため(イテレータでは、期待どおりになります)、デフォルトで期待どおりに機能するには、通常、value属性を設定する必要があります。 、指定されていない場合、タグ出力はと同じです<s:property/>

于 2012-04-05T21:16:03.093 に答える
0

私はしばらく前にStruts2を実行したので、完全にはわかりませんが、これを試してください。

タグのドキュメントには、が存在しない場合に使用されることが記載されています。だから、プロパティを削除してみてくださいs:propertydefaultvaluevaluedefault="%{datafield}"

于 2012-04-05T19:33:06.423 に答える