Liferay Portlet无法从6.1升级到6.2

时间:2016-03-18 07:45:20

标签: java jsp struts2 liferay liferay-6

我正在使用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> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <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

2 个答案:

答案 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>解决了这个问题。