我有一个带有主键和另外两个字段的实体。 我能够在我的主View JSP中的搜索容器中显示它们,并且我想实现编辑/更新功能,因此我为此创建了一个不同的JSP。我在 portlet:renderURL portlet:param 标记中传递了我要编辑的实体的属性,就像这样:
<portlet:renderURL var="editEntity">
<portlet:param name="jspPage" value="/update-page.jsp" />
<portlet:param name="primaryKey" value="<%= entityId %>" />
<portlet:param name="name" value="<%= entityName%>" />
<portlet:param name="description" value="<%= entityDesc%>" />
</portlet:renderURL>
在更新页面JSP中,如果我将任何输入字段设置为隐藏,则基于参数的值将消失,因此控制器无法处理字段的值。
即:
<aui:input name="primaryKey" type="hidden" value="${primaryKey}" />
<aui:input name="primaryKey" type="hidden" value="${name}" />
<aui:input name="primaryKey" type="hidden" value="${description}" />
注意:我只想隐藏主键字段,控制器servlet应该能够处理它并根据主键更新我的实体,如下所示:
<aui:input name="primaryKey" type="text" value="${name}" />
<aui:input name="primaryKey" type="text" value="${description}" />
有趣的是,当我设置输入字段文本类型时,一切正常,但我不希望用户输入主键,呃......
任何想法我怎么能解决这个问题?
答案 0 :(得分:0)
这对我有用
<强> view.jsp的强>
<%@ include file="init.jsp" %>
<portlet:actionURL name="testURL" var="testURL" />
<aui:form name="fm" method="post" action="<%= testURL.toString()%>">
<aui:input name="primaryKey" type="hidden" value="123" />
<aui:button-row>
<aui:button name="submit" type="submit" value="OK" />
</aui:button-row>
</aui:form>
<强> TestmvcportletPortlet.java 强>
package com.example.portlet;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet;
import com.liferay.portal.kernel.util.ParamUtil;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.Portlet;
import javax.portlet.ProcessAction;
import org.osgi.service.component.annotations.Component;
@Component(
immediate = true,
property = {
"com.liferay.portlet.display-category=category.sample",
"com.liferay.portlet.instanceable=true",
"javax.portlet.display-name=Test Portlet",
"javax.portlet.init-param.template-path=/",
"javax.portlet.init-param.view-template=/view.jsp",
"javax.portlet.resource-bundle=content.Language",
"javax.portlet.security-role-ref=power-user,user"
},
service = Portlet.class
)
public class TestmvcportletPortlet extends MVCPortlet {
@ProcessAction(name = "testURL")
public void addBook(ActionRequest actionRequest,ActionResponse actionResponse) throws SystemException {
String a = ParamUtil.getString(actionRequest, "primaryKey");
System.out.println("Value is "+a);
}
}
你找到了任何错过代码的东西吗?
答案 1 :(得分:0)
我找到了问题的解决方案。
因此,经过长时间的测试后,我发现我无法在简单的HTML标记中的任何位置获取存储在参数中的值,就像 $ {paramName} 一样,但我仍然没有&#39不知道为什么。
我所做的是请求存储在JSP scriptlet中的参数中所需的值,如下所示:
<%
String primaryKey = request.getParameter("primaryKey");
String name = request.getParameter("name");
String description = request.getParameter("description");
%>
然后我很高兴我的表格:
<aui:form action="<%= updateAbbreviationURL %>" method="post">
<aui:input name="primaryKey" type="hidden" value="<%= primaryKey %>" />
<aui:input name="entityName" label="Name" type="text" value="<%= name %>" />
<aui:input name="entityDesc" label="Description" type="text" value="<%= description %>" />
<aui:button name="submit" value="submit" type="submit" />
<aui:button name="cancel" value="cancel" type="button" onClick="<%= viewURL %>" />
</aui:form>
如果有人告诉我为什么我的初始实施没有成功,我真的很感激,我的意思是指上面提到的参数值,$ {paramName}
提前致谢!