Jsf 2 JSF2.x:基于列表框选定项的导航

Jsf 2 JSF2.x:基于列表框选定项的导航,jsf-2,Jsf 2,我需要以下场景的解决方案 我有一个带有多选列表框和提交按钮的主页。现在列表框只有大约5个项目,但将来列表框中可能有50-100个项目。对于每个选定的项目,它应按顺序打开项目详细信息屏幕。例如,如果列表框中有10个项目,当用户选择第2、第5和第9个项目并单击“提交”时,应首先显示第2个详细信息页面,然后显示第5和第9个页面。从第9页提交后,下一页应为主页 我将使用JSF2.0或JSF2.1我在某处读到,我们不应该在JSF2.x中使用faces-config.xml,因此我不确定如何实现上述场景。谢

我需要以下场景的解决方案

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


我将使用JSF2.0或JSF2.1我在某处读到,我们不应该在JSF2.x中使用faces-config.xml,因此我不确定如何实现上述场景。谢谢你的帮助。

有意思的问题,我给你打+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:刚刚注意到一条你删除的评论。您是说您希望每个项目都有一个单独的
.xhtml
页面吗?你不介意在添加或更改项目时重新部署应用程序吗?Steve感谢你的回复。是的,我想要单独的.xhtml,如果项目发生变化,我不介意重新部署应用程序。假设主页中的列表框有Item1、Item2、Item3、Item4和Item5。当用户多重选择Item1、Item4和Item5并提交主页时,下一个页面应该是Item1.xhtml,当用户提交Item1时。xhtml下一页应该是Item4。xhtml和用户提交Item4的时间。xhtml下一页应该是Item5。然后是xhtml和主页。所以我想知道如何根据所选项目动态设置下一页。Thks@Prakash嗯,你应该能够使我的建议适应这一点。在item类中,有一个字符串字段,其中包含项目页面的视图ID。然后,可以在操作中返回相应的视图ID。容易的!好啊当我进行开发时,我将向您提供最新信息。谢谢你的建议,当然可以。随时通知我。你可能会注意到我在编辑答案时考虑了不同的页面。