在JSF中,如何在不使用托管bean的情况下将参数从一个页面传递到另一个页面?
例如
<h:dataTable value="#{myObjects}" var="object">
<h:column>
<h:commandButton value="View Object" action="view-object"/>
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
我想传递对象所以我可以简单地做下一页#{object.displayValue}
Thxs.
首先,如果不使用托管bean,则无法执行此操作.
最好的方法是使用a DataModel作为value,h:dataTable以便您可以检索当前选定的行对象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>
Run Code Online (Sandbox Code Playgroud)
使用请求(或会话)作用域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;
}
}
Run Code Online (Sandbox Code Playgroud)
我假设您使用的是JSF 1.x而不是2.x,否则@ViewScopedbean会更好.
在下一页:
<p>#{bean.item.value}</p>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13240 次 |
| 最近记录: |