2014-06-05 88 views
1

我有兩個變量設置是這樣的:如何在Struts 2中連接兩個布爾值與OGNL?

<s:set var="A" value="true" /> 
<s:set var="B" value="false" /> 

我要生成下面用自定義的HTML屬性info這樣的:

<td info="truefalse">&#160;</td> 

我想在我的JSP文件,但我下面的線不能得到true旁邊false

<td info="<s:property value="#A?'true':'false'+#B?'true':'false'""/>&#160;</td> 

輸出:<td info="true">&#160;</td>

<td info="<s:property value="#A" /><s:property value="#B" />">&#160;</td> 

輸出:<td info="false">&#160;</td>

+1

第一個不會工作,因爲你有語法錯誤。第二個應該工作。 –

+0

@AleksandrM我用我試過的解決方案的輸出更新了我的問題 – Stephan

+0

第一個不會生成那種輸出,因爲它會拋出異常。 –

回答

2

OGNL使用+連接字符串。有布爾值轉換爲字符串,你應該做一些像

<s:property value="%{''+#A+#B}"/> 
+0

是否可以查看Struts使用的ognl的「trace evaluation」? – Stephan

+0

如果你在另一個問題中提出這個問題並解釋你爲什麼需要它會很好。 –

+0

請在這裏找到我有關'跟蹤評估'的問題:http://stackoverflow.com/q/24078472/363573 – Stephan

0

試試這個,這可能幫助你..

<td info="<s:property value="A"></s:property><s:property value="B"></s:property>">&#160;</td>

+0

我試過,我得到這個輸出:'  ' – Stephan

+0

此鏈接可能對您有用http://mail-archives.apache.org/mod_mbox/struts-user/200711 .mbox /%3C4740E6CF.604 @ pussep.de%3E – user3709610

1

使用<s:if>試試這個

<s:set var="A" value="true" /> 
<s:set var="B" value="false" /> 

<td info="<s:if test="%{#A==true}">true</s:if><s:else>false</s:else><s:if test="%{#B==true}">true</s:if><s:else>false</s:else>">&#160;</td> 
OR 
<td info="<s:property value="#A" /><s:property value="#B" />">&#160;</td> 

輸出:

<td info="truefalse">&#160;</td> 

原因:不能連接Boolean。您需要將Boolean轉換爲string,並且只能連接strings