3

嗨...我想知道是否可以将涉及“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");
                               %>"/>

上述方法是否可行.. 当我做同样的事情时,我得到一个错误,指出在值属性中的标记之后需要一个“=”符号..

4

2 回答 2

3

我建议blah在执行您的jsp. 这可以在servlet使用直接的 Java 中完成。一旦您确定了blah将其放入请求中的值,然后再转发到jsp.

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

然后在您的.jsp文件中,您可以使用jsp expression language.

${blah}

最好将尽可能多的逻辑排除在您的视图(jsp)之外。

于 2013-02-25T10:17:56.970 回答
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>
于 2013-02-25T10:19:20.907 回答