JSF UIRepeat и PostBack - PullRequest
       23

JSF UIRepeat и PostBack

2 голосов
/ 03 октября 2011

У меня есть простая страница, на которой я использую <ui:repeat>, и она получает значение из вспомогательного компонента.

Первоначальный запрос выдаст пустой список.Затем обратный вызов вызовет действие, которое изменит модель за <ui:repeat>, но она не будет обработана?вот и все.Когда он достигает ответа рендеринга, он не использует последнее значение из моего bean-компонента.Это ожидаемое поведение?

Как я могу заставить это работать?Должен ли я написать свой собственный тег повторения?

1 Ответ

0 голосов
/ 31 октября 2011

Я не могу точно сказать, в чем может быть проблема без некоторого вашего кода, но это основы:

Фасоль:

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:

    ...
<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>
...
...