Apache Trinidad tr: panelTabbed всегда проверяет содержимое текущей вкладки - PullRequest
1 голос
/ 19 августа 2011

У меня проблема с компонентом Apache Trinidad tr: panelTabbed.Я пытаюсь поместить различные формы во вкладки (tr: showDetailItem) этого компонента.Это, с первой попытки, не работает вообще (я получаю в NullPointerException, org.apache.myfaces.trinidadinternal.ui.laf.base.xhtml.FormValueRenderer.addNeededValue (FormValueRenderer.java:126):

<tr:panelTabbed>
  <tr:showDetailItem text="First tab">
    <tr:form>
      <tr:inputText label="Value 1" value="#{myBean.someValue1}" required="true" />
      <tr:commandButton text="Save Value 1" actionListener="#{myBean.saveValue1}" />
    </tr:form>
  </tr:showDetailItem>
  <tr:showDetailItem text="Second tab">
    <tr:form>
      <tr:inputText label="Value 2" value="#{myBean.someValue2}" required="true" />
      <tr:commandButton text="Save Value 2" actionListener="#{myBean.saveValue2}" />
   </tr:form>
  </tr:showDetailItem>
</tr:panelTabbed>

Поскольку эта ошибка также возникает, когда у меня нет содержимого внутри моих тегов tr: form, это не имеет ничего общего с моими собственными компонентами Java.

Я обнаружил, что tr: panelTabbed должен бытьпомещенный внутри тега tr: form. Так как один тег формы в другом теге формы недопустим (что снова приводит к исключению, упомянутому выше), я изменил свой код следующим образом:

<tr:form>
  <tr:panelTabbed>
    <tr:showDetailItem text="First tab">
      <tr:inputText label="Value 1" value="#{myBean.someValue1}" required="true" />
      <tr:commandButton text="Save Value 1" actionListener="#{myBean.saveValue1}" />
    </tr:showDetailItem>
    <tr:showDetailItem text="Second tab">
      <tr:inputText label="Value 2" value="#{myBean.someValue2}" required="true" />
      <tr:commandButton text="Save Value 2" actionListener="#{myBean.saveValue2}" />
   </tr:showDetailItem>
  </tr:panelTabbed>
</tr:form>

Это прекрасно работаетво-первых, но приводит меня к моей последней проблеме:

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

Есть предложения, как решить эту проблему?

Заранее спасибо

1 Ответ

0 голосов
/ 19 августа 2011

В Тринидаде есть тег tr: subform, который может делать то, что вам нужно, попробуйте использовать один общий тег tr: form и небольшую tr: subform внутри каждой панели (надеюсь, вы хотите проверить формы отдельно).

...