のクリックでビューにパラメータを渡す:JSF - 私はJSF 2.0を使用して、以下のような単純なTestButton.xhtml持っていますボタン
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<h:body>
<h:form>
<h:inputText value="#{employee.empName}"/><br/>
<h:commandButton value="Derive" action="EmployeeTest2" >
<f:param name="Name" value="#{employee.empName}"/>
</h:commandButton>
</h:form>
</h:body>
</ui:composition>
とビューがスコープされるマネージドBeanを。
@ManagedBean(name="employee", eager=true)
@ViewScoped
public class Employee implements Serializable{
String empName;
String selectedEmployeeName;
public String getSelectedEmployeeName() {
return selectedEmployeeName;
}
public void setSelectedEmployeeName(String selectedEmployeeName) {
this.selectedEmployeeName = selectedEmployeeName;
}
public Employee() {
super();
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public void manipulate(){
System.out.println("Manipulate called...");
System.out.println(selectedEmployeeName);
this.selectedEmployeeName = this.selectedEmployeeName + " Jr.";
}
は今、ボタンのクリック時に、私はコードを以下ましたEmployeeTest2.xhtmlに移動します。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<f:view>
<f:metadata>
<f:viewParam name="Name" value="#{employee.selectedEmployeeName}"/>
<f:event type="preRenderView" listener="#{employee.manipulate}"/>
</f:metadata>
</f:view>
<h:body>
<h:inputText value="#{employee.selectedEmployeeName}"/>
</h:body>
</ui:composition>
私が正しくEmployeeTest2.xhtmlにナビゲートしますが、私のパラメータの値がnullとして来ています。操作メソッドが呼び出されていることがわかります(sysoutsは印刷されます)が、selectedEmployeeNameはnullです。
私は何が不足しているかについて助言してください。
私は既にスレッドの下で言及していましたが、同じですが助けがありませんでした。
https://stackoverflow.com/questions/20880027/passing-parameters-to-a-view-scoped bean-in-jsf
アップデート1: <h:inputText value="#{employee.empName}"/>
に
<h:inputText value="Chris"/>
を変更selectedEmployeeためのsetterメソッドにブレークポイントを置きます。セッターは呼び出されていません。これは、パラメーター渡しが機能していないことを意味します。
アップデート2 employee.empNameの値が実際にnullであるので、あなたが次のページにnullを送っている私の意見ではtestButton.xhtml
コードが正しいようだ?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<h:body>
<h:form>
<h:inputText name = "Name" value="#{employee.empName}"/><br/>
<h:commandButton value="Submit" action="EmployeeTest2" >
<f:param name="Name" value="#{employee.empName}"/>
</h:commandButton>
</h:form>
</h:body>
</ui:composition>
を更新1 – MMSharma
を参照してください私の更新のポストを確認してください –
@ Maciej Kowalski:助けも同じではありませんでした。まだnullとして表示されます。アップデート2を参照してください – MMSharma