【发布时间】:2018-03-23 02:46:48
【问题描述】:
我正在通过foo.action?error=bar 调用操作
在struts.xml中,我已经配置了动作链如下:
<action name="foo">
<interceptor-ref name="defaultStack"/>
<!-- custom interceptors -->
<result name="success">/jsp/foo.jsp</result>
</action>
在 JSP 中,我正在运行一个测试:
<s:if test="#parameters.error[0] == 'bar'">
这是遗留代码;这行得通。
但是,以下没有,我不明白为什么:
<s:if test="#parameters.error == 'bar'">
为什么我需要假装错误参数是一个集合?
从文档来看:
我不应该这样做 - 但是我没有太多使用 JSP...
我在 JSP 中添加了以下内容,以帮助我了解发生了什么:
<s:property value="#parameters.error"/> // bar
<s:property value="parameters.error"/> // <nothing>
<s:property value="parameters.error[0]"/> // <nothing>
<%= pageContext.getRequest().getParameter("error") %> // bar
<%= pageContext.getRequest().getParameter("error").getClass() %> // class java.lang.String
<s:property value="#parameters.error=='bar'"/> // false
<s:property value="'token'.getClass()"/> // <nothing>
那个输出让我更加困惑。有人可以解释一下发生了什么吗?
【问题讨论】:
-
看看下面的网址 -
blah?some=v1&some=v2&some=v3&another=v。参数是列表的映射。