2012-08-01 4 views
3

selectOneRadio 값을 선택하면 양식을 제출하려고합니다. 나는 아래 코드를 가지고 있지만 내 안에 들어 가지 않는다. #{contentEditorBacking.addNewsArticle}.JSF selectOneRadio의 onchange를 통해 양식을 제출하는 방법

누구나 selectOneRadio를 클릭했을 때 어떻게 메소드에 들어갈 수 있는지 알고 있습니까?

<p:panel header="News Article Title"> 
    <h:panelGrid columns="2"> 
     <h:outputLabel for="title" value="Title" style="font-weight: bold;"/> 
     <p:inputText id="title" required="true" value="#{contentEditorBacking.newsTitle}" /> 
     <h:outputLabel value="Site" /> 
     <p:selectOneRadio value="#{contentEditorBacking.selectedNews}" layout="pageDirection" onchange="submit()"> 
      <f:selectItem itemLabel="Public" itemValue="Public" /> 
      <f:selectItem itemLabel="Member" itemValue="Member" /> 
     </p:selectOneRadio> 
     <p:commandButton value="submit" action="#{contentEditorBacking.addNewsArticle}" /> 
    </h:panelGrid> 
</p:panel> 

답변

9

두 가지 문제 :

  • 가 라디오 버튼 (체크 박스)의 "변화"에 차단하려면 대신 click 이벤트가 필요합니다.
  • <p:commandButton>은 기본적으로 JS submit()과 같이 동기 제출을 준비하지 않은 아약스 버튼입니다.

제출자가 아약스에 의해 수행되도록 대신 <p:ajax>을 사용하십시오. event 속성을 지정할 필요가 없으므로 기본값은 click입니다.

<p:selectOneRadio value="#{contentEditorBacking.selectedNews}" layout="pageDirection"> 
    <f:selectItem itemLabel="Public" itemValue="Public" /> 
    <f:selectItem itemLabel="Member" itemValue="Member" /> 
    <p:ajax listener="#{contentEditorBacking.addNewsArticle}" /> 
</p:selectOneRadio> 
<p:commandButton value="submit" action="#{contentEditorBacking.addNewsArticle}" /> 

업데이트는 의견에 따라, 당신은 매개 변수를 사용하여 다른 페이지로 이동 할 것으로 보인다. addNewsArticle() 메서드는 다음과 같이 나타나야 <p:ajax listener><p:commandButton action>과 호환됩니다.

public void addNewsArticle() throws IOException { 
    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext(); 
    ec.redirect(ec.getRequestContextPath() + "/next.xhtml?action=add"); 
} 
+0

내 addNews 기사에서, 나는 ajax를 제출할 수 없으므로 url + 쿼리 문자열을 반환하고 있습니다. – Catfish

+0

초기 질문에서 그 점에 대해 명확하지 않았습니다. 구체적인 기능 요구 사항을 언급하지 않았습니다. 그 다음 첫 번째 접근 방식을 선택하십시오. 그건 그렇고, 메소드가 문자열을 반환하는 것 외에는 아무것도하지 않는다면, action = "next.xhtml? action = add"와 같이 action 문자열에 문자열을 넣으면된다. 아약스 행동을 해제하는 것을 잊지 마세요 :) – BalusC

+0

그 것을 지정하지 않아서 미안합니다. 나는 질문을 짧고 요점을 지키려고 노력했습니다. 실제로 두 가지를 확인한 다음 문자열을 생성하므로 지원 메서드를 사용해야합니다. – Catfish

관련 문제