【问题标题】:JSF2.x: Navigation based on list box selected itemsJSF2.x:基于列表框选定项的导航
【发布时间】:2011-07-01 18:22:09
【问题描述】:

我需要以下方案的解决方案。

我有一个带有多选列表框和提交按钮的主页。现在列表框只有大约 5 个项目,但将来列表框中可以有 50 - 100 个项目。对于每个选定的项目,它应该依次打开项目详细信息屏幕。例如,如果列表框中有 10 个项目,当用户选择第 2、5 和第 9 个项目并单击提交时,应首先显示第 2 个详细信息页面,然后显示第 5 个和第 9 个页面。从第9页提交后,下一页应该是首页。

我将使用 Jsf 2.0 或 Jsf 2.1 我在某处读到我们不应该在 Jsf 2.x 中使用 faces-config.xml 所以我不太确定如何实现上述场景。感谢您的帮助。

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    有趣的问题,你会得到我的 +1。

    首先,您说的是 50 多个项目,因此显然您需要一个能够呈现所有项目类型的页面。

    在带有列表框的页面上,提交表单后,您可以使用项目 ID 填充 java.util.List,并将索引变量设置为 0。然后您应该进入项目渲染页面。在该页面上,您应该处理preRenderView 事件,以便在当前索引处显示列表中的项目。您也可以将该事件放在@ConversationScoped bean 中。您对该页面的表单提交操作也应该在 @ConversationScoped bean 中处理,该操作会增加索引,以便在下一页加载时显示下一项。

    编辑: 由于您希望每个项目有一个 JSF 页面,因此您可以调整这个想法并在您的操作中返回视图 ID。

    public String submit() {
        // Some processing logic here
        // ...
    
        // Return the view ID of the next item and increment the index.
        return items.get(index++).getViewId();
    }
    

    您的物品类别可能是这样的:

    public class Item {
        private int id;
        private String name;
        private String description;
        private String viewId;
    
        // Getters and setters
        // ...
    }
    

    希望这会有所帮助。

    【讨论】:

    • @Prakash:刚刚注意到您删除的评论。您是说每个项目都需要一个单独的<item-name>.xhtml 页面吗?您不介意在添加或更改项目时重新部署应用程序?
    • 史蒂夫感谢您的回复。是的,我想要单独的 .xhtml,如果项目发生更改,我不介意重新部署应用程序。假设主页中的列表框有Item1、Item2、Item3、Item4和Item5。当用户多选Item1、Item4和Item5并提交主页时,下一个页面应该是Item1.xhtml,当用户提交Item1时。 xhtml 下一页应该是Item4。 xhtml 和当用户提交 Item4. xhtml 下一页应该是Item5。 xhtml 然后是主页。 xhtml 所以我想知道如何根据所选项目动态设置下一页。Thks
    • @Prakash 好吧,您应该能够适应我的建议。在项目类中,有一个字符串字段,其中包含项目页面的视图 ID。然后,您可以在操作中返回适当的视图 ID。简单!
    • 好的。当我进行开发时,我会更新你。感谢您的建议。
    • 当然。让我知道。您可能会注意到我在编辑答案时考虑了单独的页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2011-03-02
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多