如何比较Struts 2中url请求参数中的单个字符

时间:2013-06-08 16:04:26

标签: java jsp struts2 struts2-namespace

我正在读取具有单个字符的url参数。它可以是YN。我必须写一个条件来检查它是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>

1 个答案:

答案 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