Liferay 7:隐藏的aui输入不会根据参数设置值

时间:2017-11-14 14:12:45

标签: liferay liferay-7 liferay-aui liferay-service-builder

我有一个带有主键和另外两个字段的实体。 我能够在我的主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}" />

有趣的是,当我设置输入字段文本类型时,一切正常,但我不希望用户输入主键,呃......

任何想法我怎么能解决这个问题?

2 个答案:

答案 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}

提前致谢!