2014-09-02 68 views
1

簡要概述:我試圖將基於Struts2的webapp移植到Struts2 Liferay portlet中。無法在Struts2的JSP中獲取值Liferay6.2 Portlet

問題定義:即使動作Class方法正確地在我的變量中設置了值,也會將值作爲NULL/Blank取回。 我已經嘗試打印出值,當我的方法返回在Action類和我的jsp中。這些值正確設置,因爲我可以從返回SUCCESS之前放置的記錄器中看到它,但在jsp中,我可以看到所有需要的設置變量都是空白的!

代碼片段:

在JSP代碼取爲以下值: 例如

<br> 
<s:if test="%{xyz!= null}"> 
<br /> 
    <div style="margin-left:9em;"> 
    <s:property value="xyz" escapeHtml="false"/> //never displayed as xyz is NULL 
    </div> 
<br /><br /> 
</s:if> 
<br> 

上打印出的xyz:<s:text name="%{xyz}"/>,我得到空值,這種情況對於所有需要值在jsp中。

我已經嘗試了選項:

我已經嘗試使用:%{#xyz}%{xyz},但並沒有幫助。

struts.xml的

<action name="selectSite" class="com.abc.xyz.LandingPageAction" 
        method="selectSite"> 
      <interceptor-ref name="abAjaxCallInterceptorStack" /> 
      <result name="success" >/WEB-INF/jsp/portal/LandingContent.jsp</result> 
     </action> 

的Liferay-portlet.xml中:

<liferay-portlet-app> 
    <portlet> 
     <portlet-name>xyz-portlet</portlet-name> 
     <icon>/icon.png</icon> 
     <private-session-attributes>false</private-session-attributes>  
     <requires-namespaced-parameters>false</requires-namespaced-parameters> 
     <header-portlet-css>/css/main.css</header-portlet-css> 
     <footer-portlet-javascript>/js/main.js</footer-portlet-javascript> 
     <add-default-resource>true</add-default-resource> 
    </portlet> 
</liferay-portlet-app> 

jsp頁面:

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%> 

<br> 
<s:if test="%{xyz!= null}"> 
<br /> 
    <div style="margin-left:9em;"> 
    <s:property value="xyz" escapeHtml="false"/> 
    </div> 
<br /><br /> 
</s:if> 
<br> 

<br /> 

<sj:tabbedpanel id="billTab" > 
    <sj:tab id="overview" href="%{overviewURL}" label="Overview" 
      target="overviewDiv" indicator="loadingInd" /> 
    <sj:tab id="invoices" href="%{invoiceURL}" label="Invoices" 
      target="invoicesDiv" indicator="loadingInd" /> 
    <div id="overviewDiv" ></div> 
    <div id="invoicesDiv" ></div> 

</sj:tabbedpanel> 
+0

爲什麼這段代碼不工作?沒有工作的代碼不可用。 – 2014-09-02 10:12:07

+0

這些值不會被提取,但是在我的ActionClass方法中設置了所需的變量,該方法返回SUCCESS。所有期望從變量%{abc}中獲得值的地方都將變爲空白。 – TechieTalk 2014-09-02 10:15:39

+0

修改了原始帖子,如果有幫助的話。%{overviewURL},%{invoiceURL}被提取爲空白 – TechieTalk 2014-09-02 10:37:02

回答

0

嘗試

<s:if test="xyz!= null"> 

如果XYZ的值棧,那麼你就不需要使用%

您還可以使用設置標籤來揭露這些值,如

<s:set var="varName" value="xyz"/>那麼就稱其爲varName的,而不是#varName

如果訪問在不同的portlet VARS你將已經設置爲變量作爲至少請求範圍這樣

<s:set var="varName" value="xyz" scope="request"/> 

值然後就可以在這樣的訪問它們從另一個portlet同一頁

<s:if test="#request.xyz != null"> 
+0

''name'屬性已被棄用,最好使用'#varName'。 – 2014-09-02 10:47:02

+0

是的,var而不是名字 – steven35 2014-09-02 10:47:23

+0

謝謝你的回覆!我只是嘗試一下,使用XYZ,而不是直接,並沒有幫助:( – TechieTalk 2014-09-02 10:53:40