s:if test="#parameters.type == 1"> < select> < option value="-1"> 请选择 < /option> < option value="1" selected> 收件箱 < /option>">
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:if测试为false,因此不会显示选择列表。有人能告诉我为什么吗?谢谢!
发布于 2010-10-15 14:52:00
我希望您能理解您的代码并不是良好的struts2实践。这不是Struts2的正常使用方式。您的http参数通常应该映射到您的操作字段,并且(在您的操作完成其工作之后)您的jsp应该显示从同一操作中提取它们的结果。正常情况下。通常,您不需要访问jsp中的http参数,也不需要访问任何逻辑(非常琐碎的逻辑除外)。
无论如何,测试中的问题可能是#parameters.type
是一个原始字符串,而您正在将它与一个数字进行比较。(这是违反正常Struts2流的许多问题之一-从普通字符串到更有意义的类型的转换通常是由参数截取程序在映射中完成的。问题不会出现,因为您的操作中有一个正确的整数“类型”字段,并且在您的jsp中请求它)您尝试过#parameters.type == '1'
吗?
发布于 2010-10-16 02:44:54
我已经解决了问题。只需用"#parameters.type“替换"#parameters.type”即可。那么测试就可以工作了!
这是因为struts2将URL形式的参数视为一个数组。
https://stackoverflow.com/questions/3942328
复制相似问题