首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过数据对象使用JSF视图参数?有可能吗?

通过数据对象使用JSF视图参数?有可能吗?
EN

Stack Overflow用户
提问于 2011-06-15 21:49:55
回答 1查看 718关注 0票数 0

环境:JSF2.0/ JPA (由EclipseLink提供)/ Glassfish 3.1 / java-EE-5 /

  • 一个小型的JSF (没有Spring,没有EJB,没有CDI) web应用程序主要是为实体显示可数据,但其目的是显示给定作家的实体
  • 列表:
  • datatable (<h:datatable/>)显示作家列表。
  • A datatable (<h:datatable/>)显示由作家编写的书籍列表。(1-*)
  • A datatable (<h:datatable/>)显示给作家的评估列表。(1-*)
  • A datatable (<h:datatable/>)显示作者处理的主题列表。(1-*).

.

,这就是我对事物的看法:

因为所有数据都有一个带有Writer的列(Writer的主键)。当用户选择给定的写入器(最好是从writer datatable)并使用它仅显示与所选写入器行相关的记录时,如何实现通知当前用户会话保持参数(Writer ID)。

同样,当用户使用选定的写入器完成操作时,他/她可以重置会话以保存另一个写入器ID,并愉快地使用新选择的写入器子项进行探索。

换句话说,使用<h:datatables /><f:param /> (或类似的内容),我如何持久地列出所选作者的图书、评估和主题项目。

对于我来说,坚持意味着=当用户从datatable中选择一个作者,并导航到/book/List.xhtml页面时,book datatable必须只列出所选作者拥有的图书条目。如果用户导航到其他地方,他只能看到与同一作者相关的内容。

一个想法是使用OpenFaces datatable过滤器,但对于最终用户来说,每次导航到页面时过滤表都太残忍了。他只需要做一次。(一个令人兴奋的解决方案是为每个datatable添加一个OpenFaces filter (<o:inputTextFilter />) (在这种情况下是<o:datatable >),然后所有表的所有过滤器都自动获得用户会话在JSF循环期间作为参数持有的写入者ID。但这真的可行吗?

很抱歉裁员了。希望有人能在暗示、想法、解决方案或更好的替代方案方面提供帮助。打招呼。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-23 21:33:28

假设您确实在运行Java 6而不是Java 5,您只需将当前选定的编写器作为方法参数传递给datatable中的命令链接/按钮中的bean,并让其他表依赖于此。

给定以下Writer实体:

代码语言:javascript
复制
public class Writer {

    private String name;
    private List<Book> books;
    private List<Evaluation> evaluations;
    private List<Topic> topics;

    // ...
}

以及以下托管bean:

代码语言:javascript
复制
@ManagedBean
@ViewScoped // request or session are also okay.
public class Bean {

    private List<Writer> writers; // +getter
    private Writer writer; // +getter +setter

    // ...
}

然后,您可以按以下方式设置您的数据(在一个视图中):

代码语言:javascript
复制
<h:form>
    <h:dataTable value="#{bean.writers}" var="writer">
        <h:column>#{writer.name}</h:column>
        <h:column>
            <h:commandButton value="View" action="#{bean.setWriter(writer)}">
                <f:ajax render=":details" />
            </h:commandButton>
        </h:column>
    </h:dataTable>
</h:form>
<h:panelGroup id="details">
    <ui:fragment rendered="#{not empty bean.writer}">
        <h:dataTable value="#{bean.writer.books}" var="book">
            <h:column>#{book.name}</h:column>
            ...
        </h:dataTable>
        <h:dataTable value="#{bean.writer.evaluations}" var="evaluation">
            <h:column>#{evaluation.name}</h:column>
            ...
        </h:dataTable>
        <h:dataTable value="#{bean.writer.topics}" var="topic">
            <h:column>#{topic.name}</h:column>
            ...
        </h:dataTable>
    </ui:fragment>
</h:panelGroup>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6364839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档