【发布时间】:2014-09-02 10:07:43
【问题描述】:
简要概述:我正在尝试将基于 Struts2 的 webapp 移植到 Struts2 Liferay portlet 中。
问题定义:即使操作类方法在我的变量中正确设置了值,这些值也会被提取为 NULL/Blank。 当我的方法在 Action Class 和我的 jsp 中返回时,我尝试打印出这些值。我可以从返回 SUCCESS 之前放置的记录器中看到这些值已正确设置,但在 jsp 中我可以看到所有必需的设置变量都是空白的!
代码sn-p:
在 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>
【问题讨论】:
-
为什么这段代码不起作用?不起作用的代码不可用。
-
未获取值,但是在我的 ActionClass 方法中设置了所需的变量,该方法返回成功。它期望从变量(如 %{abc})中获取值的所有地方都显示为空白。
-
修改了原帖,如果有帮助的话。%{overviewURL},%{invoiceURL} 被提取为空白
-
只是想添加一个默认拦截器,它会在每个请求上执行。
-
您是说这是在常规 Web 应用程序中工作,而不是在 portlet 中工作?