Liferay 7:隐藏的 aui 输入不会根据参数设置值
Liferay 7: hidden aui input won't set value based on parameter
我有一个带有主键和另外两个字段的实体。
我能够在主视图 JSP 的搜索容器中显示它们,并且我想实现一个 edit/update 函数,因此我为此创建了一个不同的 JSP。我在 portlet:renderURL portlet:param[= 中传递了我希望编辑的实体的属性30=] 标签就像这样:
<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}" />
注意:我只想隐藏主键字段,controller servlet 应该能够处理它并根据主键更新我的实体,像这样:
<aui:input name="primaryKey" type="text" value="${name}" />
<aui:input name="primaryKey" type="text" value="${description}" />
有趣的是,当我设置输入字段文本类型时一切正常,但我不希望用户输入主键,呃...
有什么办法可以解决这个问题吗?
对我有用
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);
}
}
你有没有发现任何遗漏的代码?
我找到了解决问题的方法。
因此,经过长时间的测试,我发现我无法像 ${paramName} 中的任何地方一样获取存储在参数中的值 HTML 标签,但我仍然不知道为什么。
我所做的是请求存储在 JSP 脚本中的参数中的所需值,就像这样:
<%
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}
提前致谢!
我有一个带有主键和另外两个字段的实体。 我能够在主视图 JSP 的搜索容器中显示它们,并且我想实现一个 edit/update 函数,因此我为此创建了一个不同的 JSP。我在 portlet:renderURL portlet:param[= 中传递了我希望编辑的实体的属性30=] 标签就像这样:
<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}" />
注意:我只想隐藏主键字段,controller servlet 应该能够处理它并根据主键更新我的实体,像这样:
<aui:input name="primaryKey" type="text" value="${name}" />
<aui:input name="primaryKey" type="text" value="${description}" />
有趣的是,当我设置输入字段文本类型时一切正常,但我不希望用户输入主键,呃...
有什么办法可以解决这个问题吗?
对我有用
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);
}
}
你有没有发现任何遗漏的代码?
我找到了解决问题的方法。
因此,经过长时间的测试,我发现我无法像 ${paramName} 中的任何地方一样获取存储在参数中的值 HTML 标签,但我仍然不知道为什么。
我所做的是请求存储在 JSP 脚本中的参数中的所需值,就像这样:
<%
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}
提前致谢!