struts2的问题:如果测试

时间:2010-10-15 12:46:44

标签: struts2

test.jsp的:

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

< 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?type = 1访问此页面时 s:如果test为false,则不显示选择列表。 有人可以告诉我为什么吗?谢谢!

2 个答案:

答案 0 :(得分:2)

我希望你明白你的代码不是很好的struts2练习。这不是Struts2应该正常使用的方式。您的http参数通常应该映射到您的操作字段,并且(在您的操作完成其工作之后)您的jsp应该显示从同一操作中拉出它们的结果。一般。通常,您不需要在jsp中访问http参数,也不需要执行任何逻辑(除了非常简单的逻辑)。

无论如何,测试中的问题可能是#parameters.type是原始字符串,并且您将它与数字进行比较。 (这是违反正常Struts2流程的众多问题之一 - 从普通字符串到更有意义的类型的转换通常在该映射中由param拦截器完成。问题不会出现,你有一个正确的整数'type'字段在你的行动中,在你的jsp中,你要求它吗?你试过#parameters.type == '1'吗?

答案 1 :(得分:0)

我已经解决了这个问题。只需用“#parameters.type [0]”替换“#parameters.type”即可。 然后测试工作!

这是因为struts2将参数表格URL视为一个数组。