gpt4 book ai didi

JSF 传递参数到另一个页面

转载 作者:行者123 更新时间:2023-12-04 21:14:04 24 4
gpt4 key购买 nike

在 JSF 中,如何在不使用托管 bean 的情况下将参数从一个页面传递到另一个页面?

例如

<h:dataTable value="#{myObjects}" var="object">
<h:column>
<h:commandButton value="View Object" action="view-object"/>
</h:column>
</h:dataTable>

我想传递对象以便下一页我可以简单地做#{object.displayValue}

谢谢。

最佳答案

首先,如果不使用托管 bean,您将无法执行此操作。

最好的方法是使用 DataModel作为 h:dataTablevalue 以便您可以通过 DataModel#getRowData() 检索当前选定的行对象.您只需要确保 bean 在后续请求中保留相同的模型即可。换句话说,将模型填充到 bean 的构造函数中。

<h:form>
<h:dataTable value="#{bean.model}" var="item">
<h:column>
<h:commandButton value="View Object" action="#{bean.view}"/>
</h:column>
</h:dataTable>
</h:form>

请求(或 session )范围内的 bean 如下所示:

public class Bean {

private DataModel model;
private Item item;

public Bean() {
List<Item> list = new ArrayList<Item>();
list.add(new Item(1, "value1"));
list.add(new Item(2, "value2"));
list.add(new Item(3, "value3"));
model = new ListDataModel(list);
}

public String view() {
item = (Item) model.getRowData();
return "view";
}

public DataModel getModel() {
return model;
}

public Item getItem() {
return item;
}

}

我假设您使用的是 JSF 1.x 而不是 2.x,否则 @ViewScoped bean 是 better .

在下一页:

<p>#{bean.item.value}</p>

关于JSF 传递参数到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com