f: validateLongRange создание экземпляра Бина там, где он не должен - PullRequest
1 голос
/ 06 апреля 2011

У меня есть следующий валидатор:

<h:inputText id="orderC" value="#{columnEdit.selectedColumn.position}"  maxlength="2" validatorMessage="#{columnEdit.valOrder}">
             <f:validateLongRange maximum="#{columnEdit.maxOrder}" minimum="#{columnEdit.minOrder}" />
</h:inputText>

Валидатор принадлежит странице JSF , базовый компонент которой ViewScoped .

Соответствующие фрагменты кода:

public Integer getMaxOrder()
    {
        maxOrder = selectedFileFormat.getColumnList().size();

        return maxOrder;
    }

_

public Integer getMinOrder()
    {
       if (getIsCode())
          {
             minOrder = 1;
          }
          else
          {
             minOrder = 2;
          }

          return minOrder;
    }

_

public String getValOrder()
    {
        valOrder = "Range of " + minOrder + " to " + maxOrder;

        return valOrder;
    }

_
На моей странице есть кнопка Отмена :

 <p:commandButton value="#{i18n['xxx.cancel']}" action="#{columnEdit.cancel}" ajax="false">
                  <p:confirmDialog message="#{i18n['xxx.cancelConf']}" severity="warn" />
                  <f:param name="formatId" value="#{columnEdit.selectedFileFormat.id}"/>
                  <f:param name="navigationCase" value="edit"/>
 </p:commandButton>

_
Чье действие:

public String cancel()
    {
        Integer theFormatId = selectedFileFormat.getId();

        return "fileFormatEdit.xhtml"
    }

_
Мой вопрос: , почему postConstruct моего компонента вызывается после нажатия кнопки отмены? Я обнаружил, что причина в f:validateLongRange, но почему он создает новый columnEdit bean?

1 Ответ

0 голосов
/ 08 ноября 2011

Я думаю, это потому, что вы специально определяете следующее представление для навигации, возвращая "fileFormatEdit.xhtml"?

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

Или просто измените определение метода действия на public void cancel (), где вам не нужно ничего возвращать.

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