我正在读取具有单个字符的url参数。它可以是Y
或N
。我必须写一个条件来检查它是Y
还是N
并做相应的事情。这是我写的,但似乎没有用(总是去其他)。网址是
http://wwww.helloworld.com/showInfo?thecountry=us&theconditionTypeInUrl=Y
<s:set var="theUrl" value="%{#parameters.theconditionTypeInUrl}" />
<s:if test="%{#theUrl == 'Y'}">
</s:if>
<s:else>
</s:else>
我也试过
<s:set var="theUrl" value='%{#parameters.theconditionTypeInUrl}' />
<s:if test='%{#theUrl == "Y"}'>
</s:if>
<s:else>
</s:else>
struts.xml包含
<action name="showInfo" class="showInfoAction">
<result name="success" type="tiles">dis.Info</result>
<result name="no_results" type="tiles">dis.noInfo</result>
</action>
答案 0 :(得分:0)
通常请求参数由params
拦截器处理。动作配置应该将此拦截器包含在堆栈中。如果未明确引用此拦截器,则使用已包含defaultStack
拦截器的params
。您需要的是要扩展"struts-default"
的操作的包。
<package name="default" namespace="/" extends="struts-default">
然后将处理参数并将其放入action属性,您可以通过实现getter和setter来通过OGNL访问它们。
另一种方法是通过您的操作实施ParameterAware
。注入参数后,可以从valueStack
顶部的操作获得,您可以通过
<s:if test="parameters['theconditionTypeInUrl'] == 'Y'">
为参数属性添加getter后
Map getParameters(){
return this.parameters;
}
您可以找到更详细的解释here。
使用#parameters
密钥通过OGNL从操作上下文映射尝试访问请求参数的方式。访问if
标记中的参数可能会遇到问题,请参阅here。