情況如下,我有一個頁面添加/更新用戶 prerender方法根據參數要麼創建一個新的對象或獲取現有PropertyNotFoundException:目標不可達,'userObj'返回null與jsf按鈕和請求範圍
@Component("user")
@Scope("request")
public class UserBean {
private User userObj;
private boolean editUser;
public String addUser() throws Exception {
if (editUser) {
userService.updateUser(userObj);
} else {
userService.addUser(userObj);
}
return "users?faces-redirect=true";
}
public void preRender(ComponentSystemEvent event) throws Exception {
System.out.println("############ PRERENDER #############");
if (editUser) {
userObj = userService.getUser(userID);
pageTitle = "Updating " + userObj.getName();
buttonTitle = "Save Changes";
} else {
userObj = new User();
pageTitle = "Adding new user";
buttonTitle = "Add User";
}
}
,並在JSF頁面我稱之爲預渲染爲:
<f:event id="event1" listener="#{user.preRender}" type="javax.faces.event.PreRenderComponentEvent" />
但是當我點擊添加按鈕主要內容如下:
<h:commandButton value="#{user.buttonTitle}" action="#{user.addUser}" style="width: 105px; "/>
我收到以上異常,請指教。
顯示完整的堆棧跟蹤 – Bozho
我猜你的'commandButton'正在向服務器創建一個新的請求,導致UserBean創建一個新的實例。因此'userObj'爲空。 – flash
@flash解決它的任何想法? –