将动态内容传递给jsp:param“value”属性

时间:2013-02-25 10:10:40

标签: java jsp java-ee

Hie ...我想知道是否可以将涉及“if”或“switch”函数的动态内容发送到jsp:param“value”属性...可以发送一个可以在以下方式

<jsp:param name="blah" value="<%=blah%>"/>

现在我要问的是......

<jsp:param name="blah" value="<% 
                               if(blah == 1)
                               out.print("The value is 1");
                               if(blah == 2)
                               out.print("The value is 2");
                               %>"/>

是上面的方法可能..当我做同样的事情时,我得到一个错误,指出在value属性中的标记之后会出现“=”符号。

2 个答案:

答案 0 :(得分:3)

我建议您在执行blah之前确定jsp的值。这可以使用直接Java在servlet内完成。确定blah的值后,将其放入请求中,然后转发给jsp

request.setAttribute("blah", "some value");

然后,在.jsp文件中,您可以使用jsp expression language引用该属性。

${blah}

最好尽可能多地保留你的观点(jsp)。

答案 1 :(得分:2)

你会考虑把它改成

吗?
<% if(blah == 1){ %>
<jsp:param name="blah" value="The value is 1"/>
<%}else{%>
<jsp:param name="blah" value="The value is 2"/>
<%}%>

否则使用等效的JSTL标签,如

<c:choose>
   <c:when test="${blan eq 1}">
      <jsp:param name="blah" value="The value is 1"/>
   </c:when>
   <c:otherwise>
      <jsp:param name="blah" value="The value is 2"/>
   </c:otherwise>
</c:choose>

@gabbi, 您不一定要有两个<jsp:forward>,而是可以声明另一个变量来保存该值,如下所示:

<% 
String blahValue = ""; 
if(blah == 1){
   blahValue = "The value is 1";
}else if(blah==2){
   blahValue = "The value is 2";
}else{
   blahValue = "the value is invalid"; }
%>

<jsp:forward>
   <jsp:param name="blah" value="<%=blahValue%>"/>
</jsp:forward>