【发布时间】:2013-03-15 20:29:16
【问题描述】:
我正在创建一个简单的 Liferay Portlet,但我无法在输入框中获取要呈现的名称。主要的 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>
view.jsp 文件是:
<%
String name = (String)request.getAttribute("ATTRIBUTE_NAME");
%>
<p>Hello <%= name %>!</p>
问题是视图上的输出总是 Hello!。尽管用户在输入框中输入了一个名称,但没有将任何名称传递给输出。为什么?
【问题讨论】:
-
你检查过你的 processAction 方法是否被调用了吗??(即 System.out.println("");)
-
您在
actionRequest.getParameter("name");中获得任何价值吗?另一方面,我不确定使用“名称”设置首选项并使用“名称”恢复它是否正确。 -
@Dani:我在哪里可以查看?在 jsp 文件中还是在 Portlet 类中?
-
从
actionRequest获取后可以简单的打印变量“name”的值 -
您正在尝试获取“ String name = prefs.getValue("NAME", defaultValue);"但是你像这样保存它“prefs.setValue("Name", name);" ..检查这个..我猜它应该是名称而不是名称
标签: java request liferay liferay-6