JSF将参数传递给另一个页面

时间:2010-06-09 23:38:22

标签: jsf

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

e.g。

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

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

Thxs。

1 个答案:

答案 0 :(得分:5)

首先,如果不使用托管bean,就无法做到这一点。

最好的方法是使用DataModel作为value的{​​{1}},以便您可以按DataModel#getRowData()检索当前选定的行对象。您只需要确保bean在后续请求中保留相同的模型。换句话说,在bean的构造函数中填充模型。

h:dataTable

使用请求(或会话)范围的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>

我假设您使用的是JSF 1.x而不是2.x,否则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; } } bean是better

在下一页:

@ViewScoped