2013-02-25 56 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