Java 名称属性未在Liferay Portlet中呈现

Java 名称属性未在Liferay Portlet中呈现,java,request,liferay,liferay-6,Java,Request,Liferay,Liferay 6,我正在创建一个简单的liferayportlet,但我无法获得输入框中给定的名称来进行渲染。主要的Portlet类是: public class MyHelloWorldPortlet extends GenericPortlet { public void init() { editJSP = "/html/myhelloworldportlet/edit.jsp"; viewJSP = "/html/myhelloworldportlet/view.jsp"; } pub

我正在创建一个简单的liferayportlet,但我无法获得输入框中给定的名称来进行渲染。主要的Portlet类是:

public class MyHelloWorldPortlet extends GenericPortlet {

public void init() {
    editJSP = "/html/myhelloworldportlet/edit.jsp";
    viewJSP = "/html/myhelloworldportlet/view.jsp";
}

public void processAction(
        ActionRequest actionRequest, ActionResponse actionResponse)
    throws IOException, PortletException {

    String name = actionRequest.getParameter("name");
    PortletPreferences prefs = actionRequest.getPreferences();

    prefs.setValue("Name", name);
    prefs.store();

    actionResponse.setPortletMode(PortletMode.VIEW);
}

public void doEdit(
        RenderRequest renderRequest, RenderResponse renderResponse)
    throws IOException, PortletException {

    include(editJSP, renderRequest, renderResponse);
}

public void doView(
        RenderRequest renderRequest, RenderResponse renderResponse)
    throws IOException, PortletException {

    PortletPreferences prefs = renderRequest.getPreferences();
    String defaultValue = "";
    String name = prefs.getValue("NAME", defaultValue);

    renderRequest.setAttribute("ATTRIBUTE_NAME", name);

    include(viewJSP, renderRequest, renderResponse);
}

protected void include(
        String path, RenderRequest renderRequest,
        RenderResponse renderResponse)
    throws IOException, PortletException {

    PortletRequestDispatcher portletRequestDispatcher =
        getPortletContext().getRequestDispatcher(path);

    if (portletRequestDispatcher == null) {
        _log.error(path + " is not a valid include");
    }
    else {
        portletRequestDispatcher.include(renderRequest, renderResponse);
    }
}

protected String editJSP;
protected String viewJSP;

private static Log _log = LogFactoryUtil.getLog(MyHelloWorldPortlet.class);
}

edit.jsp文件是:

<form action="<portlet:actionURL/>" method="post" name="<portlet:namespace/>fm">
<label for="<portlet:namespace/>name">Name:</label>
<input name="<portlet:namespace/>name" type="text">
<br/><br/>

<input type="submit" value="Add Name">
</form>
<%
String name = (String)request.getAttribute("ATTRIBUTE_NAME");
%>


<p>Hello <%= name %>!</p>

姓名:


view.jsp文件是:

<form action="<portlet:actionURL/>" method="post" name="<portlet:namespace/>fm">
<label for="<portlet:namespace/>name">Name:</label>
<input name="<portlet:namespace/>name" type="text">
<br/><br/>

<input type="submit" value="Add Name">
</form>
<%
String name = (String)request.getAttribute("ATTRIBUTE_NAME");
%>


<p>Hello <%= name %>!</p>

你好!


问题是视图上的输出总是Hello!。尽管用户在输入框中输入了名称,但不会向输出传递任何名称。为什么?

更改doView方法:

公共视图(
渲染请求渲染请求,渲染响应渲染响应)
抛出IOException、PortletException{
PortletPreferences prefs=renderRequest.getPreferences();
字符串defaultValue=“”;
//您需要使用设置首选项时使用的名称恢复首选项
String name=prefs.getValue(“name”,defaultValue);
setAttribute(“属性名称”,名称);
包括(viewJSP、renderRequest、renderResponse);
}


在我看来,您的代码的其余部分还可以。

您是否检查了processAction方法是否被调用??(即System.out.println(“”;)您是否在
actionRequest.getParameter(“名称”)中获得了任何值?另一方面,我不确定用“Name”设置首选项并用“Name”恢复它是否正确。@Dani:我在哪里可以检查它?在jsp文件或Portlet类中?从
actionRequest
获取变量“name”后,您可以简单地打印变量“name”的值,您试图获取“String name=prefs.getValue(“name”,defaultValue)”;“但您是这样保存的”prefs.setValue(“name”,name);”。。我想应该是Name instad of Name,正如我在上一篇评论中所说的,问题仅仅是“Name”和“Name”之间的区别。