Я новичок в JSF, и у меня проблема с очень простым представлением Facelets:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core" >
<h:head>
<title></title>
</h:head>
<h:body>
<h:form id="form">
<h:panelGrid id="ciccio" columns="2">
<h:outputText value="Nome " />
<h:inputText value="#{thinBean.nome}" />
<h:commandButton id="ok" value="OK" />
<h:commandButton id="vai" value="Go" rendered="#{not empty thinBean.nome}" action="Vista1" />
</h:panelGrid>
</h:form>
</h:body>
</html>
и с моим простым Backing Bean.
package magazzino;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class ThinBean implements Serializable {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
После первого звонка появляется только первая кнопка. Когда я ввел test
в поле nome
и отправил эту форму, нажав кнопку, обозначенную ok
, также появляется вторая кнопка.
Когда я нажимаю вторую кнопку, обозначенную vai
, ничего не происходит: Vista1
не отображается.
Я не понимаю такого поведения: почему фаза Invoke Application пропущена?
Спасибо
<h:commandButton>
с вспомогательным компонентом? - person Tiny   schedule 10.02.2014action
для<h:commandButton>
,action="Vista1"
предполагается использовать в качестве результата навигации (целевое представление). - person Tiny   schedule 10.02.2014"someString"
, то это то же самое, что и<h:commandButton action="#{bean.methodthatReturnsSomeString}" />
и<h:commandButton action="someString" />
. Фабрицио: Похоже, поскольку ваш bean-компонент@RequestScoped
, значениеnome
будетnull
при создании bean-компонента в запросе, поэтому командная кнопка не должна отображаться, что приведет к полной неразберихе. Было бы лучше изменить область действия вашего компонента как минимум на@ViewScoped
. Кроме того, убедитесь, что у вас есть представление с именем Vista1 (обычно это файл Vista1.xhtml). - person Luiggi Mendoza   schedule 10.02.2014