我正在做一个JSF2项目。
1。我有一个带有一些复选框的表格。查看以下代码
<ui:repeat>
<h:selectManyCheckbox value="#{wagent.selectedPra}">...
</h:selectManyCheckbox>
</ui:repeat>
所以我在ui:repeat中使用selectManyCheckbox,我希望不同的selectManyCheckbox的值指向相同的值。 但是当表单提交时,我没有所有选中的框。 我怎么能这样做?
2。我有一个带有一些输入的表格。在我的操作上,我想合并一些pdf文件,保持在同一页面上,并且弹出窗口似乎提供下载合并文件。
3。是否为每个请求创建了具有请求范围的所有托管bean,或者只是在xhtml页面中使用它们?
4。我有一个用于注销的命令链接。在我的行动中,我使用session.invalidate()并返回“登录”。所以我回到登录,但是在验证登录时,我的会话管理bean似乎没有被创建。错误就像yourSessionBean为null。怎么了?
答案 0 :(得分:2)
1:所以我在ui:repeat中使用selectManyCheckbox,我希望不同的selectManyCheckbox的值指向相同的值。但是当表单提交时,我没有所有选中的框。我该怎么做?
让他们指向不同的价值。在给定的示例中,每次都会覆盖bean值,直到循环结束。例如,在bean中使用List<List<Pra>>
(或在问题中使用Pra
方式):
<ui:repeat value="#{wagent.allSelectedPra}" var="selectedPra">
<h:selectManyCheckbox value="#{selectedPra}">
...
</h:selectManyCheckbox>
</ui:repeat>
2:我有一个带有一些输入的表格。在我的操作上,我想合并一些pdf文件,保持在同一页面上,并且弹出窗口似乎提供下载合并文件。
至少需要做两件事:
facesContext.getExternalContext().addResponseHeader("Content-Disposition", "attachment;filename=name.pdf"); // Force "Save As" dialogue.
facesContext.responseComplete(); // Prevent JSF from taking response in hands.
3:是否为每个请求创建了具有请求范围的所有托管bean,或者只是在xhtml页面中使用它们?
为每个HTTP请求创建它们。您描述的范围仅适用于视图范围(如果我理解您的话)。
4:我有一个注销的命令链接。在我的行动中,我使用session.invalidate()并返回“登录”。所以我回到登录,但是在验证登录时,我的会话管理bean似乎没有被创建。错误就像yourSessionBean为null。怎么了?
您可能以错误的方式访问会话范围的托管bean。您需要将其注入@ManagedProperty
或按Application#evaluateExpressionGet()
抓取。