2015-05-30 4 views
1

Я ниже портлет view.xhtml:метод действия CommandButton не вызывается в Liferay

<?xml version="1.0"?> 
    <f:view xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:c="http://java.sun.com/jsp/jstl/core" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:p="http://primefaces.org/ui"> 

      <h:body> 

       <h:form> 
        <h:commandButton value="TESTButton" action="#{navigationViewBean.submit}" /> 
        <h:outputText value="TESTGetter: #{navigationViewBean.testField}" /> 
       </h:form> 
      </h:body> 
    </f:view> 

И это управляемый компонент:

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.RequestScoped; 

@ManagedBean(name = "navigationViewBean") 
@RequestScoped 
public class NavigationViewBean { 
    private String testField; 
    public boolean lol = false; 

    public void submit() { 
     System.out.print("TEST BUTTON INVOKED"); 
    } 

    public String getTestField() { 
     System.out.print("TEST GETTER INVOKEDx"); 
     return testField; 
    } 

    public void setTestField(String testField) { 
     this.testField = testField; 
    } 

} 

Единственное, что я пытаюсь сделать, это вызвать метод который печатает что-то на моей консоли. Проблема в том, что независимо от того, что я делаю, метод действия никогда не вызывается. Метод getter правильно вызван.

Что я делаю неправильно?

+0

Что об изменении глобального тега '' на '' ? – Omar

+4

Не рекомендуется добавлять , когда вы находитесь в мире портлетов .... – aston

ответ

4

Я не уверен, почему, но после добавления этой строки в мой liferay-portlet.xml он исправил ее.

<requires-namespaced-parameters>false</requires-namespaced-parameters> 

И здесь весь блок:

<portlet> 
     <portlet-name>Test1</portlet-name> 
     <icon>/icon.png</icon> 
     <requires-namespaced-parameters>false</requires-namespaced-parameters> 
     <header-portlet-css>/css/main.css</header-portlet-css> 
</portlet> 
+2

Даниил, ваш ответ правильный. В Liferay 6.2 параметры имен пространства имен портала по умолчанию с пространством имен портлетов. Тем не менее, библиотеки компонентов mojarra и JSF были несовместимы с этой функцией в то время, поэтому вам нужно было указать ' false'. – stiemannkj1

+1

Поскольку эти библиотеки были обновлены для работы с параметрами с именами, мы (команда Liferay Faces) в настоящее время находимся в процессе обновления и тестирования этих библиотек с ' true' (который по умолчанию), поэтому вам не нужно будет указывать этот параметр в будущем. – stiemannkj1

+1

Для получения дополнительной информации нажмите [здесь] (https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-2/migrating-from-liferay-faces-3-1-to-liferay-faces-3 -2-4-2), [здесь] (https://www.liferay.com/web/meera.success/blog/-/blogs/liferay-requires-name-spaced-parameters) и [здесь] (https://www.liferay.com/web/neil.griffin/blog/-/blogs/announcement-liferay-faces-3-x-2-x-ga5-released). – stiemannkj1

Смежные вопросы