我正在使用struts 2和liferay 6.1.0开发网站。现在我想将liferay版本更新到6.2。当我启动liferay tomcat服务器时,它显示所有portlet都可供使用。但是当我填写表单时,值不会传递给Action类。我sysout检查它,发现s:textfield值不是来到动作类,但sysout字符串是在控制台中打印。完全相同的是代码在liferay 6.1中工作。
任何帮助都非常值得赞赏。
jsp文件:
<s:form name="searchCallLogCategoryWise" id="searchCallLogCategoryWise" action="searchCallLogCategoryWise" method="post">
<table>
<tr>
<td width="30%">Status</td>
<td width="70%"><select name="caseCriteria" id="caseCriteria">
<option value="Select">Select</option>
<option value="Open">Open</option>
<option value="Closed">Closed</option>
<s:textfield name="callLogId" id="callLogId" value="1234"></s:textfield>
</select> <s:submit
action="searchCallLogCategoryWise" value="Search"></s:submit>
</td>
</tr>
</table>
</s:form>
struts.xml中:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.ui.theme" value="simple" />
<package name="view" extends="struts-portlet-default"
namespace="/view">
<action name="searchCallLogCategoryWise" class="com.stp.portal.view.callLogModulePortlet" method="searchCallLogCategoryWise" >
<result name="success">/WEB-INF/view/CallLogReportStartPage.jsp</result>
</action>
</package>
</struts>
callLogModulePortlet.java
public class callLogModulePortlet extends DefaultActionSupport {
private String callLogId = "";
private String caseCriteria = "";
public String getCallLogId() {
return callLogId;
}
public void setCallLogId(String callLogId) {
this.callLogId = callLogId;
}
public String getCaseCriteria() {
return caseCriteria;
}
public void setCaseCriteria(String caseCriteria) {
this.caseCriteria = caseCriteria;
}
public String searchCallLogCategoryWise() throws Exception
{
System.out.println("i am in searchCallLogCategoryWise...");
System.out.println("Call Log Id:: " + getCallLogId());
System.out.println("case Criteria: " + getCaseCriteria());
return "success";
}
}
当我在控制台中运行它时:
i am in searchCallLogCategoryWise...
Call Log Id::
case Criteria:
我正在使用以下罐子:
struts2的核 - 2.2.3.jar
的struts2-portlet的插件-2.2.3.jar
XWork的核 - 2.2.3.jar
答案 0 :(得分:1)
尝试将<portlet:namespace/>
添加到参数名称并正确关闭<select>
输入:
<select name="<portlet:namespace/>caseCriteria" id="caseCriteria">
<option value="Select">Select</option>
....
</select>
<s:textfield name="<portlet:namespace/>callLogId" id="callLogId" value="1234"/>
我不确定s
taglib是否自动添加它 - 但是portlet需要它知道参数实际上是指向你的portlet。普通<select>
肯定不会自动包含它。
答案 1 :(得分:0)
通过在liferay-portlet.xml中添加<requires-namespaced-parameters>false</requires-namespaced-parameters>
解决了这个问题。