2010-10-15 61 views
1

test.jsp的:問題struts2的S:如果測試

%%%%%%%%%%%%% 

< s:property value="#parameters.type"/> 

< s:if test="#parameters.type == 1"> 

    < select> 

< option value="-1"> 
    請選擇 
< /option> 
< option value="1" selected> 
     收件箱 
< /option> 
< option value="2"> 
    發件箱 
< /option> 
    < /select> 
< /s:if> 

%%%%%%%%%%%%%% 

時,該網頁的訪問test.jsp的類型= 1 的S:如果測試是假的,所以選擇列表不顯示。 有人可以告訴我爲什麼嗎?謝謝!

回答

2

我希望你明白,你的代碼是不好的struts2實踐。這不是Struts2應該正常使用的方式。您的http參數通常應該映射到您的動作字段,並且(在您的動作完成其工作後),您的jsp應顯示將結果從同一動作中拉出。一般。通常情況下,你不需要在你的jsp中訪問http參數,也不需要做任何邏輯(除非是非常小的)。

不管怎樣,也許在您的測試問題是#parameters.type是原始的字符串,而你比較它與一個數字。 (這是違反正常的Struts2流程的許多問題之一 - 從純字符串到更有意義的類型的轉換通常是由param攔截器在映射中完成的。問題不會出現在於您有適當的整數「類型」字段在你的行動,並在你的jsp你問)你試過#parameters.type == '1'

+0

是的,我也試着#parameters.type ==「1」,但它不會工作,要麼。 – user449034 2010-10-16 01:47:40

0

我已經解決了這個問題。只需將「#parameters.type」替換爲「#parameters.type [0]」即可。 然後測試工作!

那是因爲struts2的治療參數形成URL爲一個數組。