привязка ввода в пользовательском интерфейсе: повтор в jsf - PullRequest
3 голосов
/ 16 августа 2011

Я использую Facelets JSF 2.0 с библиотекой компонент Primefaces 3.0.M2. я пытаюсь добиться динамического числа строк, включая поля ввода, которые заполняются, когда происходит выборка данных.

всякий раз, когда выбор сделан, динамические строки, сгенерированные правильно с полями ввода, но после первого выбора для следующих выборов динамический счетчик строк изменяется правильно, но поля ввода не обновляются и продолжают показывать входные данные из первого выбора.

вот как я повторяю список в facelet;

<ui:repeat value="#{goalEntranceBean.selectedCard.parameterList}" var="prmBean" >
        <li><h:outputText value="#{prmBean.lookUp.value}"/></li>
        <li>

            <h:outputText value="Weight:"/>
            <p:inputText id="wx" required="true" value="#{prmBean.weight}">
            </p:inputText>
            <h:outputText value="Percent:"/>
            <p:inputText required="true" value="#{prmBean.percent}">
            </p:inputText>
        </li>

    </ui:repeat>

мой бин, где я получаю список карт и устанавливаю selectedCard с событием rowSelect в datatable.

@ManagedBean(name = "goalEntranceBean")
@ViewScoped
public class GoalEntranceAction implements Serializable {

private List<ScoreCard> personalCards = new ArrayList<ScoreCard>();

    private ScoreCard selectedCard = new ScoreCard();
......
}

когда я проверил в режиме отладки, я могу видеть истинный список, но на экране элементы не изменяются.

Ответы [ 3 ]

3 голосов
/ 17 августа 2011

Это распространенная проблема (задается каждые пару дней).Короче говоря, входные данные внутри пользовательского интерфейса: повтор не работают, точка.

Это проблема с JSF, давним, известным.Возможно это будет исправлено.Может быть, нет, кажется, что на самом деле это никого не волнует (я имею в виду - вход? В ... повторить такой сумасшедший сценарий!).

Быстрое исправление - использовать ah: dataTable, возможно, безбожно злоупотреблять css, чтобы он выглядел как список.Долгое исправление заключается в использовании некоторого итератора из другой библиотеки.Primefaces имеет элемент, который должен работать, который отображает неупорядоченный список.

2 голосов
/ 13 февраля 2012

спасибо за ваши ответы.Извините, что забыли поделиться решением.Как я уже упоминал выше, у меня есть датафайлы.В событии выбора строки я отрисовываю данные и хочу обновить ячейки этого типа.Использование p: inputtext легко решило мою проблему.Теперь я могу изменить данные на экране и увидеть значения после операции обновления на экране.Я не понимаю причину, но это работает.

  <p:dataTable var="orgPrmBean"
                 value="#{scoreCardOperationsBean.selectedCard.orgParameterList}"
                 emptyMessage="#{labels.norecord}"
                 rowKey="#{orgPrmBean.id}"
            >

        <p:columnGroup type="header">
            <p:row>
                <p:column headerText="Parameters" colspan="3" style="text-align:left;width:480;"/>
            </p:row>
        </p:columnGroup>


        <p:column style="text-align:left;width:200px;">
            <h:outputText value="#{orgPrmBean.info}"/>
        </p:column>

        <p:column style="text-align:left;width:180px;">
            <p:inputText value="#{orgPrmBean.weight}"
                         rendered="#{scoreCardOperationsBean.selectedCard.goalEdit}">
                <f:convertNumber maxFractionDigits="0"/>
            </p:inputText>

        </p:column>  

    </p:dataTable>
1 голос
/ 13 декабря 2011

Это возможно, чтобы заставить его работать, но решение состоит в том, чтобы связать входные данные с компонентом поддержки и обновить значения элементов управления в компоненте поддержки через слушателей (используя новое значение, полученное в аргументе). Очевидно, что это не очень хорошее решение, если у вас сложная форма, поскольку вам нужно добавить прослушиватель / элемент управления в компоненте поддержки для каждого элемента управления на странице, но это практично, если у вас есть только один или два входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...