2011-11-11 51 views
5

我傳遞參數值的方式中包括像下面訪問Struts2的包括在支柱中的另一個jsp頁面參數值的方式,如果標籤

<s:include value="../../commonjspf/status.jspf"> 
     <s:param name="mystatus" value="%{status}"> 
     </s:param> 
    </s:include> 

其中狀態變量來自於動作類在jsp頁面標籤。

我想訪問mystatus PARAM在status.jspf頁面支柱,如果標籤與我的默認值進行比較。

<s:if test =""> 
    </s:if> 

<s:set name="" value =""/> 

上述任何標籤。

如何訪問?

請給我建議。

謝謝。

回答

4

提供給包含頁面的任何附加參數都無法通過標記在呈現頁面內訪問,因爲不會創建值棧。 有關詳細信息,請參閱Struts2文檔。

Struts2 Include tag

你可以,但是,通過HttpServletRequest對象或JSP頁面通過scriptlet.something訪問它們在servlet像

${param.ParamName} 
+0

感謝它的顯示,但我想比較這個值。我如何比較這個值? –

+0

您必須通過HttpServletRequest對象或通過scriptlet從JSP頁面訪問它們。因此,您必須使用普通的HTTPServlet請求(如<%= request.getParameter(「type」)%>「)訪問這些參數。希望這會幫助你 –

+0

我們可以設置$ {param.ParamName}到任何變量或

8

使用${param.ParamName}符號來訪問它們,如在下面的參考中提到:

http://struts.apache.org/2.0.14/docs/include.html

樣品代碼:

第1頁:

 <s:include value="testPage.jsp"> 
      <s:param name="mystatus">TestThis</s:param> 
     </s:include> 

第2頁:

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<c:set var="mystatus" value="${param.mystatus}" scope="page"/> 
<s:if test='%{#attr.mystatus == "TestThis"}'> 
    This is what we want 
</s:if> 
<s:else> 
    This is not what we want 
</s:else> 
+0

感謝它的顯示,但我想比較這個值。我如何比較這個值? –

+0

請參閱示例代碼。 –

+1

謝謝,它也適用於我! –

2

我只是想在拋出這個作爲使用struts的替代方案包括標籤。

您可以改用jsp:include標籤和使用Struts s:push標籤把參數壓入堆棧,使他們在包括頁面可用時,它增加了一些額外的線條到JSP,但更靈活,你可以傳遞對象而不僅僅是將字符串傳遞到包含的JSP中。

推標籤的性質意味着一旦你完成了參數從堆棧再次彈出。

主JSP

<s:push value="#{'someStringParam':'some string', 'someObjectParam': someObject}"> 
    <jsp:include page="../includes/user-tabs.jsp" /> 
    </s:push> 

包括JSP

<s:property value="someStringParam" /> 

<s:if test="someObjectParam.someValue > 10"> 
    Result! 
</s:else> 
2

大廈從詹姆斯的答案,這幫助我在我的第2頁:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page isELIgnored="false" %> 
<c:set var="mystatus" value="${param.mystatus}" scope="page"/> 
<c:if test="${empty mystatus}"> 
    <c:set var="mystatus" value="default status here" /> 
</c:if> 
1

如果你是傳遞一個pag的值e到另一個(如下所示)請注意語法。您需要在您傳遞的名稱文本週圍放置單引號,否則將其視爲變量的名稱。

<s:include value="other.jsp"> 
    <s:param name="thevar" value="'text i want to see'" /> 
</s:include> 

然後在「other.jsp」頁面,你會看到「文本我希望看到」如果你這樣做如下:

${param.thevar} 

相反如果你不要將單引號在參數值屬性中,您在other.jsp頁面中看不到任何內容。

我只提及它,因爲我已經看過很多次了。

相關問題