简要概述:我正在尝试将基于Struts2的webapp移植到Struts2 Liferay portlet中。
问题定义:即使动作类方法在我的变量中正确设置值,值也会被取为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 :(得分:0)
试
<s:if test="xyz!= null">
如果xyz位于valuestack上,那么您不需要使用%
您还可以使用Set tag来公开这些值,例如
<s:set var="varName" value="xyz"/>
然后只需将其称为varName而不是#varName
如果您正在访问不同portlet中的变量,那么您将变量的值设置为至少这样的请求范围
<s:set var="varName" value="xyz" scope="request"/>
然后你可以从同一页面中的另一个portlet中这样访问它们
<s:if test="#request.xyz != null">