Как заполнить JSF inputText начальным значением и передать управляющее значение в другое свойство? - PullRequest
3 голосов
/ 16 февраля 2012

скажем У меня

 <h:dataTable var="s" value#{somebean.properties}>
 <h:column>
  <h:inputText initial=#{s.min} value=#{somebean.mintmp}/>
  <h:commandButton action=#{filterbean.addProretryFilter(s.id, somebean.mintmp)} />
 </h:column>
 </h:dataTable>

Атрибут "initail" не завершается в inputText. Есть ли способ реализовать желаемую функциональность?

Ответы [ 4 ]

5 голосов
/ 16 февраля 2012

Вы можете привязать свое входное текстовое поле к базовому компоненту и инициализировать его в конструкторе или @PostConstruct и установить начальное значение.

   @ManagedBean 
   public class Bean{

      private HtmlInputText inputComponent = new HtmlInputText();
      private String min = "5";
      private String minData;

      @PostConstruct
      public void init(){
        inputComponent.setValue(min);
      }

      //....get/set other logic

    }

В поле зрения вы можете иметь

<h:inputText value="#{bean.minData}" binding="#{bean.inputComponent}"></h:inputText>
0 голосов
/ 17 февраля 2012

Используйте простые символы!Это действительно хороший атрибут update для кнопок, которые обновляют компоненты, которые вы хотите обновить.Это волшебно.

0 голосов
/ 16 февраля 2012

Я думаю, вам нужно переосмыслить свой дизайн. Даже без заполнения значения по умолчанию у вас есть проблема. Этот псевдокод примерно аналогичен вашей логике:

//beans
SomeBean somebean = ...
DataModel model = ...
FilterBean filterbean = ...
//apply request values phase
for(int i=0; i<model.getRowCount(); i++) {
  model.setRowIndex(i)
  S s = model.getRowData()
  //inputText's state is set to the submitted row state by the dataTable
  Object submittedValue = inputText.getSubmittedValue()
  somebean.mintmp = submittedValue
}
//invoke application phase
for(int i=0; i<model.getRowCount(); i++) {
  model.setRowIndex(i)
  S s = model.getRowData();
  //commandButton's state is set to the submitted row state by the dataTable
  if(commandButton.clicked()) {
    filterbean.addProretryFilter(s.id, somebean.mintmp)
  }
}

somebean всегда будет заполняться значением последней строки.

Подробнее см. Жизненный цикл JSF и DataModel .

0 голосов
/ 16 февраля 2012

в получателе вашего управляемого компонента вы можете вернуть значение по умолчанию. Э.Г.

private String mintmp=null;

public String getMintmp()
{
   if(mintmp == null)
     return "default min";
   return mintmp;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...