2011-01-14 4 views
1

В настоящее время я запускаю свое веб-приложение в JSF 2.0, оно также использует Primefaces 2.2RC2.Редактируемый Datatable с использованием диалога в JSF 2.0

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

Единственный способ, который я получил эту работу, чтобы в колонке, содержащей CommandButton, передать, что строки содержимое как Params, как на примере ниже:

<p:dataTable var="car" value="#{myBean.cars}" id="carList"> 
    <h:column> 
     <h:inputText value="#{car.id}" style="width:100%"/> 
    </h:column> 

    <h:column> 
     <h:inputText value="#{car.name}" style="width:100%"/> 
    </h:column> 
    <h:column> 
     <h:commandButton actionListener=#{myBean.updateRow} onsuccess="editCardDialog.show()" > 
      <f:param name="carId" value=#{car.id} /> 
      <f:param name="carName" value=#{car.name} /> 
     </h:commandButton> 
    </h:column> 

    ... 
</p:dataTable> 

Так что мой вопрос заключается в следующем, в настоящее время только способ, который я получил эту работу, чтобы в моей бэк-боба создать фиктивные временные глобальные переменные, чтобы установить Params так, когда диалог мой открывает он может ссылаться на значения, как этот

 //myBean.java 
    private String tempCarId; 
    private String tempCarName; 

    public void setTempCarId(String tempCarId) { 
      this.tempCarId = carId; 
    } 

    public String getTempCarId() { 
      return tempCarId; 
    } 

    public void setTempCarName(String tempCarName) { 
      this.tempCarName = carName; 
    } 

    public String getTempCarName() { 
      return tempCarName; 
    } 

    public void updateRow(ActionEvent event) { 

      String carId = FaceContext...getParameterMap("carId"); 
      String carName = FacesContext...getParameterMap("carName"); 

      setTempCarId(carId); 
      setTempCarName(carName);  
    } 

Затем в диалоговом окне я просто ссылаться те временные переменные

<p:dialog> 
     <h:inputText value=#{myBean.tempCarId} /> 
     <h:inputText value=#{myBean.tempCarName} /> 
    </p:dialog> 

Я не уверен, что это правильный способ сделать это. Моя кишка говорит мне об этом не потому, что кажется чрезвычайно избыточной необходимость создавать временные переменные в моем Bean, чтобы я мог передать их в диалог. Кто-нибудь знает о более сжатом способе сделать это, поэтому мне не нужно создавать миллион временных переменных в моем бэкбоне?

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^