Liferay Genric Portlet Dem Значение Null - PullRequest
0 голосов
/ 26 августа 2018

Это мой класс с аннотацией @ProcessAction.Когда я ввожу текстовое поле, в консоли будут отображаться входные данные:

public class FirstGenericDemo extends GenericPortlet {

    public void init() {
        viewTemplate = getInitParameter("view-template");
    }

    @RenderMode(name= "view")
    public void myView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
        include(viewTemplate, renderRequest, renderResponse);
    }

   //Annotation
   @ProcessAction(name = "myActionMethod")
   public void myActionMethod(ActionRequest request, ActionResponse response) throws PortletException, IOException {
    // TODO Auto-generated method stub
        String name = ParamUtil.getString(request,"name");
        System.out.println("Name => " + name);
    }

    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 viewTemplate;
    private static Log _log = LogFactoryUtil.getLog(FirstGenericDemo.class);

}

А вот myView.jsp:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />

This is the <b>First Generic Demo</b> portlet in View mode.

<portlet:actionURL var="myaction" name="myActionMethod">
</portlet:actionURL>
<form action="${myaction}" method="post">
Name: <input type = "text" name="name">
<input type="submit" value="SUBMIT">
</form>

Но когда язапустить его всегда печатает «Name => null» в консоли.Как я мог это исправить?

1 Ответ

0 голосов
/ 26 августа 2018

Параметры портлета обычно должны быть пространством имен в HTML - поскольку страница состоит из очень многих портлетов, это позволяет устранить неоднозначность отдельных входных данных, которые могут сосуществовать на странице.Измените ваш JSP на

<input type="text" name="<portlet:namespace/>name" />

и все готово.На стороне Java это будет двусмысленно означать «имя».

Вы также можете попробовать использовать библиотеку тегов <aui:input />, так как она выполняет это оформление автоматически.

Третий вариант -настройте параметры Liferay для этого портлета, чтобы не требовать параметров пространства имен.Вы делаете это в WAR-упакованном портлете в liferay-portlet.xml или в пакете OSGi (Liferay 7.0 и выше) как свойство компонента com.liferay.portlet.requires-namespaced-parameters=false .

...