2013-02-25 44 views
3

我想知道是否可以将涉及“if”或“switch”功能的动态内容发送到jsp:param“value”属性...一个可以发送可通过以下方式将动态内容传递给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"); 
           %>"/> 

可能上述方法..当我做同样的我得到一个错误,指出在值属性中的标记后面应该有一个“=”符号。

回答

3

我会建议在执行jsp之前确定blah的值。这可以在使用直接Java的servlet内完成。一旦确定blah的值后,请将其发送到jsp之前。

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

然后你.jsp文件中,你可以参考使用jsp expression language属性。

${blah} 

尽可能多地保留您的视图(jsp)以尽可能多的逻辑。

+0

hey kev在...我会尝试使用这种方法..我是jsp编程的新手..我还没有学习如何使用jsp表达式lang ..我使用spiritwalkers方法获得了所需的结果..再次感谢 – GVR 2013-02-25 10:42:38

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> 
+0

非常感谢。 ..我改变了上述提到的方式..只有后退是我必须使用元素的每个选项....所以如果我有两个值“blah”我不得不使用if (blah == 1){%><%} if (blah == 2){%>}%> – GVR 2013-02-25 10:38:16

+0

答案会根据您的关注进行编辑。 – spiritwalker 2013-02-25 10:53:00