2014-12-10 1 views
0

두 개의 텍스트 필드가 입력 된 텍스트 대신 빈 문자열을 보내는 문제가 있습니다. 대화 상자 안에 있습니다. 관리 빈은 뷰 범위입니다. 이 명령 단추는 대화 상자가 열립니다 :저장할 때 PrimeFaces 대화 상자의 Null 속성

<p:commandButton id="btn-open_dialog-name_query" 
       oncomplete="PF('dialog_name_query').show();" 
       style="width: 209px; text-align: center;" 
       value="Save Query" /> 

대화는 다음과 같습니다

<p:dialog id="dlg_name_query" style="width:500px;" widgetVar="dialog_name_query" header="Save Query" hideEffect="fade" position="center center" resizable="false" showEffect="fade"> 
    <p:panelGrid> 
     <p:row> 
      <p:column> 
       <p:outputLabel for="nameQuery" value="Name" /> 
      </p:column> 
      <p:column> 
       <p:inputText id="nameQuery" value="#{dashboardDetailedMB.query.name}" /> 
      </p:column> 
     </p:row> 
     <p:row> 
      <p:column> 
       <p:outputLabel for="descriptionQuery" value="Description" /> 
      </p:column> 
      <p:column> 
       <p:inputText id="descriptionQuery" value="#{dashboardDetailedMB.query.description}" /> 
      </p:column> 
     </p:row> 
     <p:row> 
      <p:column> 
       <p:commandButton id="btn-save_query-client" value="Save to current client"> 
        <p:ajax event="click" listener="#{dashboardDetailedMB.saveQueryClient}" update="msg" /> 
       </p:commandButton> 
      </p:column> 
     </p:row> 

     <p:row> 
      <p:column> 
       <p:commandButton id="btn-save_query-user" value="Save to current user"> 
        <p:ajax event="click" listener="#{dashboardDetailedMB.saveQueryUser}" update="msg" /> 
       </p:commandButton> 
      </p:column> 
     </p:row> 
    </p:panelGrid> 
</p:dialog> 

방법 saveQueryClient :

public void saveQueryClient() { 
    try { 
     FacesContext fc = FacesContext.getCurrentInstance(); 
     ExternalContext ec = fc.getExternalContext(); 
     HttpServletRequest request = (HttpServletRequest) ec.getRequest(); 
     HttpSession session = (HttpSession) request.getSession(false); 
     String querySql = (String) session.getAttribute("querySql"); 
     query.setQuery(querySql); 
     queryBean.add(query); 
     queryBean.insertClientHasQuery(getClientId(), queryBean.getLastRow().getId()); 
     jsfUtils.messages("INFO", "Query inserted!", ""); 
    } catch (Exception ex) { 
     ex.printStackTrace(System.out); 
     jsfUtils.messages("ERROR", "Error when saving query to client!", ""); 
    } 
} 

답변

0

p:commandButton는 AJAX 기능이 내장되어, p:ajax을 사용하기 때문에 필요가 없습니다. 귀하의 문제는 p:ajaxprocess="@this" (이 경우에만 commandButton을 의미 함)으로 기본 설정되어 있기 때문에 p:inputText은 제출되지 않습니다. 그러나 p:commandButton 기본적으로 당신이 필요로하는 것입니다 process="@form"에 :

<p:commandButton id="btn-save_query-client" 
      value="Save to current client" 
      action="#{dashboardDetailedMB.saveQueryClient}" 
      update="msg" /> 

는 또한 양식이 대화 주위에 보이는, 내가 대화 상자 안에 폼을 넣고에서 기본 폼 아래의 대화 상자를 넣어 그것을 안전을 찾을 수 페이지로 표시하지만 작동하는 경우 변경하지 않아도됩니다.

+1

고마워요! 또한 사용자를 괴롭히지 않는 또 다른 문제를 해결했습니다. 이중 Ajax 요청 (아마도 중첩 된 양식 때문일 수 있습니다). – rsb2097

관련 문제