Aşağıdaki destek fasulye var:JSF'ye bir yüz mesajı eklerken eylemlerim gerçekleştirilemiyor mu?
@ViewScoped
@ManagedBean
public class WeighFamilyBacking2 implements Serializable {
private static final long serialVersionUID = 1L;
private String[] children = new String[] { "Child1", "Child2", "Child3" };
private HashMap<String, Integer> newWeights;
public WeighFamilyBacking2() {
newWeights = new HashMap<String, Integer>();
for (String s : getChildren())
newWeights.put(s, new Integer(0));
}
public void distributeWeightsWithoutMessage(ActionEvent event) {
for (String s : newWeights.keySet()) {
newWeights.put(s, newWeights.get(s) + 1);
}
}
public void distributeWeights(ActionEvent event) {
for (String s : newWeights.keySet()) {
newWeights.put(s, newWeights.get(s) + 1);
}
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage("Succesful", "Weights redistributed."));
}
public HashMap<String, Integer> getNewWeights() {
return newWeights;
}
public List<String> getChildren() {
return Arrays.asList(children);
}
}
... Ve aşağıdaki xhtml sayfa:
<!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:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<h:body>
<h:form>
<ui:repeat var="child" value="#{weighFamilyBacking2.children}">
<h:outputText value="#{child}" />
<h:outputText value="#{weighFamilyBacking2.newWeights[child]}" /> -
<h:outputText value="#{weighFamilyBacking2.newWeights[child]}" /> -
<h:inputText id="oz" value="#{weighFamilyBacking2.newWeights[child]}" />
<h:inputText id="lbs"
value="#{weighFamilyBacking2.newWeights[child]}" />
<br />
</ui:repeat>
<h:commandButton
actionListener="#{weighFamilyBacking2.distributeWeights}"
value="Redistribute" />
<h:commandButton
actionListener="#{weighFamilyBacking2.distributeWeightsWithoutMessage}"
value="Redistribute Without Message" />
</h:form>
</h:body>
</html>
Bu basit bir tekrarlanabilir test niteliği taşıyor. Mesajsız yeniden dağıtım üzerine tıkladığınızda, işler beklendiği gibi çalışır. Yeniden dağıtım düğmesine tıkladığınızda başarı mesajı görüntülenir, ancak giriş alanları güncellenmez. Ancak, metin çıktı alanı sadece bir kez güncellenir.
Her iki düğmede de anında = true kullanmayı denedim ve bunu etkilemiyor. Bu çok basit bir durum, neden işe yaramadığını anlayamıyorum.
Bunu 2.1.3 dahil Mojarra'nın tüm yeni sürümleriyle denedim.
JSF impl/sürümü nedir? Bu sorun Mojarra 2.1.1 ile yeniden üretilemez. – BalusC
2.1.2 kullanıyorum. Ayrıca zengin yüzeyler 4 kullanıyorum ve primefaces de karışımda. Bunlardan bazılarını çıkarmayı deneyeceğim ve bunun işe yarayıp yaramadığına bakacağım. –
Sadece Mojarra 2.1.2 (FCS 20110610) ile aynı sonuçlar. –