首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSF UIRepeat和PostBack

JSF UIRepeat和PostBack
EN

Stack Overflow用户
提问于 2011-10-03 23:57:22
回答 1查看 312关注 0票数 2

我有一个简单的页面,其中一个我使用<ui:repeat>,它从一个支持bean获取值。

初始请求将给它一个空列表。然后回发将调用一个操作,该操作将更改<ui:repeat>后面的模型,但它不会被呈现?!

我通过它进行了调试,我看到<ui:repeat>在恢复视图阶段计算了值,但仅此而已。当它到达render response时,它不使用我的bean中的最新值。这是预期的行为吗?

我怎么才能做到这一点呢?我必须写我自己的重复标签吗?

EN

回答 1

Stack Overflow用户

发布于 2011-10-31 22:34:04

如果没有你的一些代码,我真的不能说出问题是什么,但这些是基本的:

支持bean:

代码语言:javascript
运行
复制
public class ObjectService{

private DataModel objectDataModel;
private List<Object> objectList;
private Pagination paginationHelper;
private ObjectDao objectDao = new ObjectDao();
private String queryOption;

public void setQueryOption(String queryOption){
    this.queryOption = queryOption;
}

public String getQueryOption(){
    return this.queryOption;
}

public <E> PaginationHelper getPagination(final List<E> list) {
    pagination = new PaginationHelper(10) {

        @Override
        public int getItemsCount() {
            return list.size();
        }

        @Override
        public DataModel createPageDataModel() {
            return new ListDataModel(list);
        }
    };

    return pagination;
}

public void setPagination(PaginationHelper pagination) {
    this.pagination = pagination;
}

public List<Object> getObjectList(){
    this.objectList = objectDao.readObjectsWhere(queryOption);

    return this.objectList;
}

public void setObjectList(List<Object> objectList){
    this.objectList = objectList;
}

public DataModel getObjectDataModel(){
     if (objectDataModel == null) {
        objectDataModel = getPagination(getObjectList()).createPageDataModel();
    }

    return objectDataModel;
}

public void setObjectDataModel(DataModel objectDataModel){
    this.objectDataModel = objectDataModel
}

public String changeModel(){
    objectDataModel = null;     
    return null;
}

}

XHTML页面:

代码语言:javascript
运行
复制
    ...
<h:form>


    <fieldset>                   
        <label>
        <span>Option:</span>
        <h:inputText value="#{objectService.queryOption}" />
        </label>

        <h:commandButton action="#{objectService.changeModel}" value="request data" />
    </fieldset>

    <ui:repeat value="#{objectService.objectDataModel}" var="objectVar">

        <h:outputLabel value="#{objectVar.property1}" />
        <h:outputLabel value="#{objectVar.property2}" />
        <h:outputLabel value="#{objectVar.property3}" />

    </ui:repeat>

</h:form>
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7637459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档