![](/img/trans.png)
[英]JSF 2 : Why my first bean is called during an ajax action to a second bean?
[英]JSF Action is not called
我再次遇到一個無法找到解決方案的問題。
托管bean
@Named(value="changeInfoBean")
@RequestScoped
public class ChangeInfoBean {
private String email;
private String firstName;
private String lastName;
/** Creates a new instance of ChangeInfoBean */
public ChangeInfoBean() {
FacesContext context = FacesContext.getCurrentInstance();
// Gets the user which is currently logged in
LoginBean bean = (LoginBean) context.getExternalContext().getSessionMap().get("loginBean");
BasicUser user = bean.getUser();
this.email = user.getEmail();
this.firstName = user.getFirstName();
this.lastName = user.getLastName();
}
public String changeName() {
Session session = HibernateUtil.getSessionFactory().openSession();
try {
Transaction tx = session.beginTransaction();
BasicUser updateUser = (BasicUser) session.load(BasicUser.class, this.email);
updateUser.setFirstName(firstName);
updateUser.setLastName(lastName);
tx.commit();
}
catch(Exception e) {
e.printStackTrace();
}
finally {
session.close();
return "succes";
}
}
回歸“成功”只是為了回報一些東西。 使用bean的頁面的一部分
<h:panelGroup rendered="#{param.change == 'name'}">
<h:form id="changeNameForm">
<h:messages/>
<h:panelGrid id="panel1" columns="2">
First Name:
<h:inputText id="firstName" value="#{changeInfoBean.firstName}"/>
Last Name:
<h:inputText id="lastName" value="#{changeInfoBean.lastName}"/>
<f:facet name="footer">
<h:panelGroup style="display:block; text-align:center">
<h:commandButton value="Submit Name" action="#{changeInfoBean.changeName}"/>
</h:panelGroup>
</f:facet>
</h:panelGrid>
</h:form>
</h:panelGroup>
我已經檢查了所有它在每個生命周期階段運行,嘗試使bean會話作用域並嘗試設置immediate =“true”。 我試圖刪除inputText字段,只剩下commandButton。 在每種情況下,都不會調用方法changeName()。 可以做些什么?
顯然, #{param.change}
在表單提交請求期間不等於"name"
,導致h:panelGroup
不呈現,這反過來又導致不調用按鈕的操作。
將以下內容添加到表單中:
<input type="hidden" name="change" value="#{param.change}" />
這將保留后續請求的#{param.change}
。 將bean放在會話范圍中只有在它是#{sessionBean.change}
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.