Managed Bean への Ajax 呼び出しの実装で多くの問題が発生しています。簡単なテスト ケースを用意しました。outputText の値が Beta に変更されることを期待していますが、Alpha のままです。私は何を間違っていますか?
package com.example.controllers;
import javax.faces.bean.ViewScoped;
import javax.inject.Named;
@Named(value = "tester")
@ViewScoped
public class tester{
private String testString;
/**
* Creates a new instance of tester
*/
public tester() {
testString = "Alpha";
}
public String changeText(){
testString = "Beta";
return null;
}
/**
* @return the testString
*/
public String getTestString() {
return testString;
}
/**
* @param testString the testString to set
*/
public void setTestString(String testString) {
this.testString = testString;
}
}
<?xml version='1.0' encoding='UTF-8' ?>
<!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:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<h:commandButton value="Add Row" action="#{tester.changeText}">
<f:ajax event="action" execute="@form" render="out"></f:ajax>
</h:commandButton>
<h:outputText id="out" value="#{tester.testString}"/>
</h:form>
</h:body>
</html>