2012-01-12 26 views
11

Tôi có một trang chứa biểu mẫu và biểu mẫu khác được lồng trong một hộp thoại. tôi cần phải vượt qua tham số để thoại khi nút bấm theo hình thức chínhTruyền tham số vào hộp thoại trong cùng một trang

<h:form> 
<p:dataTable var="form" value="#{myBean.formList}"> 
    <p:commandButton id="selectProduct" 
          update="selectProductForm" oncomplete="selectProductDlg.show()" 
          image="ui-icon-" > 
          <f:param name="formId" value="#{form.id}" /> 
       </p:commandButton> 
</p:dataTable> 
</h:form> 

<p:dialog> 
...<h:form> 
<p:commandButton action="#{myBean.setSelected}" 
        update="main_form" 
        oncomplete="if(#{myBean.errorText == 'SUCCESS'}){ selectProductDlg.hide();}" 
        value="Sec"> 
       </p:commandButton> 


tôi không thể nhìn thấy formId trong myBean với mã:

if (form == null) { 
      HttpServletRequest req = (HttpServletRequest) FacesContext 
        .getCurrentInstance().getExternalContext().getRequest(); 
      if(req.getParameter("formId") != null) { 
       formId = Long.valueOf(req.getParameter("formId")); 
      } 
      if (formId != null && !"".equals(formId)) { 
       form = formService.findById(formId); 
      } 
     } 

đang ở đâu tôi sai cảm ơn

Trả lời

17

Giả sử rằng hạt đậu nằm trong phạm vi xem, chỉ cần đặt nó như là một bea n property direclty trong phương thức action của nút lệnh trong cột datatable.

<h:form> 
    <p:dataTable var="form" value="#{myBean.formList}"> 
    <p:column> 
     <p:commandButton id="selectProduct" 
         action="#{myBean.setCurrentForm(form)}" 
         update="selectProductForm" oncomplete="selectProductDlg.show()" 
         image="ui-icon-"> 
     </p:commandButton> 
    </p:column> 
    </p:dataTable> 
</h:form> 

<p:dialog> 
    <h:form> 
    <p:commandButton action="#{myBean.setSelected}" 
        update="main_form" 
        oncomplete="if(#{myBean.errorText == 'SUCCESS'}){ selectProductDlg.hide();}" 
        value="Sec"> 
    </p:commandButton> 
    </h:form> 
</p:dialog> 

Nếu bạn có nút hủy trong hộp thoại, bạn cần để phương thức hành động của nó đặt thành null.

Không cần phải loay hoay xung quanh với các tham số yêu cầu HTTP thô trong yêu cầu POST. <f:param> chỉ nên sử dụng trong các yêu cầu GET (ví dụ: <h:link>, <h:button>, v.v ...).

+0

cảm ơn rất nhiều, tôi đã từng nghĩ tôi không thể vượt qua tham số cho phương thức hành động, bây giờ tôi thay đổi nội dung mã của tôi và nó làm việc – merveotesi

+0

Bạn đang chào đón. – BalusC

-1

Tôi vừa gọi là datamodel của PDataTables như được hiển thị bên dưới.

  1. Trong Java Bean Tôi đang làm mới dữ liệu từ phương thức backend receivedFdnsController.refreshData.
    1. Để làm mới dữ liệu dưới dạng tôi đang gọi datamodel làm mới như # {receivedFdnsController.newReceivedFdnsDataModel} sau khi ẩn hộp thoại. Thêm chi tiết được hiển thị bên dưới.

Trân Khaleel

+0

Hãy thử tìm hiểu lý do tại sao hàng đợi chỉnh sửa được đề xuất của bạn đầy và lý do hàng đợi đó không được xử lý vì bài đăng hiện không có bất kỳ biểu mẫu hữu ích nào. –

Các vấn đề liên quan