JSP Portlet不提交表单值

时间:2009-11-05 08:33:58

标签: null portlet liferay params

我正在使用Liferay portal 5.x. 我已经部署了一个简单的portlet(使用jsp& servlet扩展GenericPortlet)。 此portlet将包含用户名&密码字段。我能够在查看模式下看到该表单。 但是当我提交表单时,操作将转到Portlet类的processAction()但是用户名&密码请求参数变为空。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这是JSR 168还是286 portlet?

听起来你确信实际上正在调用processAction()方法。如果没有,我会先验证一下。关键是表单上有action属性。您是否使用actionURL标记在JSP上呈现action属性?

也就是说,每当我发现对getParameter()的调用返回null时,就意味着我拼错了参数,无论是在表单中输入元素的name属性中,还是在{{1}的参数中}。此外,参数区分大小写。

您是否有机会使用表单代码和getParameter()方法更新您的问题?

这是一个示例portlet(JSR 286),它提取请求参数(包括语句和导入的导入):

processAction()

以下是JSP示例:

public class TestPortlet extends GenericPortlet {

public void init() throws PortletException {
    super.init();
}


public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    response.setContentType(request.getResponseContentType());
    PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/jsp/view.jsp");
    rd.include(request,response);
}


public void processAction(ActionRequest request, ActionResponse response) throws PortletException {
    System.err.println(request.getParameter("username"));
    System.err.println(request.getParameter("password"));
}

}

答案 1 :(得分:0)

我们应该添加名称前缀。

<input type="text" name="<portlet:namespace/>username">

答案 2 :(得分:0)

为每个属性添加名称空间很麻烦。避免对参数命名的另一种方法是在liferay-portlet.xml中将属性require-namespaced-parameters设置为false

<portlet>
        <portlet-name>portlet-name</portlet-name>
        <icon>/icon.png</icon>
        <!-- Set this property to false to avoid namespacing parameters -->
        <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>
        <css-class-wrapper>portlet-name-portlet</css-class-wrapper>
</portlet>