Jsf 同步会话范围的托管bean
我的JSF2.0应用程序中有两个屏幕。屏幕1搜索学生并在表格中列出学生。结果表中的学生姓名是指向学生详细信息页面(屏幕2)的链接 我的托管bean:Jsf 同步会话范围的托管bean,jsf,jsf-2,Jsf,Jsf 2,我的JSF2.0应用程序中有两个屏幕。屏幕1搜索学生并在表格中列出学生。结果表中的学生姓名是指向学生详细信息页面(屏幕2)的链接 我的托管bean: @SessionScoped public class TestController { private Student studentOnUI; // Student being viewed on the UI // synchronized public getters and setters public String viewStude
@SessionScoped
public class TestController {
private Student studentOnUI; // Student being viewed on the UI
// synchronized public getters and setters
public String viewStudentAction(String studentId) {
this.studentOnUI = getStudentFromDB( studentId );
return "studentDetailedPage";
}
public synchronized String clearSearchAction() {
this.studentOnUI = null;
return "studentSearchPage";
}
屏幕1 xhtml代码段
<!-- search fields -->
<h:commandButton
value="Clear Search"
action="#{testController.clearSearchAction()}"/>
<!-- Search button -->
<!-- search results table -->
<h:outputText value="#{testController.studentOnUI.name}" />
<h:dataTable
value="#{testController.studentOnUI.subjects}"
var="subject">
<h:outputText value="#{subject.score}"/>
</h:dataTable>
屏幕2 xhtml代码段
<!-- search fields -->
<h:commandButton
value="Clear Search"
action="#{testController.clearSearchAction()}"/>
<!-- Search button -->
<!-- search results table -->
<h:outputText value="#{testController.studentOnUI.name}" />
<h:dataTable
value="#{testController.studentOnUI.subjects}"
var="subject">
<h:outputText value="#{subject.score}"/>
</h:dataTable>
我面临以下问题:
感谢大家指点我使用这种方法的错误之处,或者是否需要在这里采用不同的方法。这确实是一种奇怪的行为,但我宁愿使用JavaScript禁用第一页上的链接,使其“不可链接”。 尝试使用jQuery: 1按钮:$(“#按钮”).attr(“已禁用”,true) 2链接:$('a.something')。单击(函数(e){ e、 预防默认值(); });
我不确定支持bean中的同步,因为JSF控制器必须锁定学生对象,而不是clear方法。我错了吗?什么是屏幕?您在浏览器中使用了两个选项卡?或者它更像一个向导?我说的屏幕是指一个页面。没有选项卡或向导。用户单击第1页上的链接1(在学生表中导航到学生详细信息页面),在响应完成之前,单击第1页上的链接2。