Liferay 7: скрытый вход aui не будет устанавливать значение на основе параметра

У меня есть объект с первичным ключом и двумя другими полями. Я могу отображать их в контейнере поиска в моем основном 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 на странице обновления, если я устанавливаю любое поле ввода скрытым, значения параметров исчезают, поэтому контроллер не может обрабатывать значения полей.

i.e.:

<aui:input name="primaryKey" type="hidden" value="${primaryKey}" />
<aui:input name="primaryKey" type="hidden" value="${name}" />
<aui:input name="primaryKey" type="hidden" value="${description}" />

Примечание. Я хочу скрыть только поле первичного ключа, сервлет контроллера должен иметь возможность обрабатывать его и обновлять мою сущность на основе первичного ключа, например:

<aui:input name="primaryKey" type="text" value="${name}" />
<aui:input name="primaryKey" type="text" value="${description}" />

Забавно то, что все просто работает, когда я устанавливаю текстовый тип полей ввода, но я бы не хотел, чтобы пользователи вводили первичный ключ, да...

Любые идеи, как я могу это исправить?


person MEZesUBI    schedule 14.11.2017    source источник
comment
это внутри ‹aui:form› ?   -  person Yatin patel    schedule 14.11.2017
comment
Конечно. Я не знаю, почему это не работает должным образом   -  person MEZesUBI    schedule 14.11.2017


Ответы (2)


это работа для меня

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);

    }
}

Вы нашли что-нибудь, что вы пропустили код?

person Yatin patel    schedule 14.11.2017
comment
Извините, наверное, я не слишком ясно выразился. Моя проблема связана со значениями на основе параметров. Я отредактирую свой пост, чтобы уточнить - person MEZesUBI; 14.11.2017

Я нашел решение проблемы.

Итак, после долгих часов тестирования я обнаружил, что просто не могу получить значения, хранящиеся в параметрах, как ${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}

Заранее спасибо!

person MEZesUBI    schedule 15.11.2017