关于JSF的各种问题

时间:2011-02-08 21:22:43

标签: java jsf jsf-2

我正在做一个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。怎么了?

1 个答案:

答案 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()抓取。