2013-05-12 5 views
0
<h:form> 
      <h:selectOneMenu value="#{productBean.productName}"> 
       <f:selectItem itemValue="" itemLabel="..." /> 
       <f:selectItems value="#{productBean.pizza}" var="pizza" itemValue="#{pizza.name}" itemLabel="#{pizza.name}" /> 
       <f:ajax listener="#{productBean.valueChanged(productBean.productName)}" render="pizzaResult pizzaButton" /> 
      </h:selectOneMenu> 
      <h:commandButton value ="Dodaj do zamówienia" disabled="#{productBean.isDisabled}" id="pizzaButton" onclick="#{productBean.order}"/> 
      <h:outputText id="pizzaResult" value="#{productBean.message}" /> 
     </h:form> 

이것은 내 JSF 형식입니다. valueChanged 리스너를 사용하여 ome 케이스에서 버튼을 비활성화시키고 제대로 작동합니다. 그러나 나는 왜 그것이 버튼을 클릭하는 것을 유발하는지 알지 못한다. 버튼을 클릭 한 후에 만 ​​버튼을 사용할 수있는 방법은 무엇입니까?JSF 리스너가 버튼을 클릭하여 트리거합니다.

비활성화 된 옵션을 삭제하면 정상적으로 작동하는 것으로 나타났습니다. ://하지만 왜 순간적으로 버튼이 활성화되어있을 때 작업을 트리거 할 수 없습니까?

+0

"버튼을 클릭하는 이유는 무엇입니까?"- 버튼에 'onclick'알림이 표시되지 않습니다! – Nikhil

+0

또한, 관련 점은 - 다른''이'pizzaButton'을 렌더링 할 필요가 없다는 것입니다.'render = "pizzaResult pizzaButton"' – Nikhil

+0

'으로 이전 것을 추가 할 수 있습니다. 나를 가능하게하는 방법 그것을 클릭 한 후에 만 ​​버튼을 사용하려면 버튼을 한 번 클릭하면 사용할 수 있습니까? –

답변

0

그래, 그랬어. 문제는 버튼이 활성화 된 (disabled="false")으로 나타날 수 있지만 클라이언트 측이 변경되어 서버가 이에 대해 알지 못하고 응용 프로그램이 버튼이 계속 비활성화되어 있다고 생각한다는 것입니다. 심지어 활성화 된 버튼처럼 보입니다. action="#{something}"과 작동하지 않습니다. 변경 내용을 서버에 알려야합니다. 내가 한 일은 @ViewScoped을 관리 빈에 추가하는 것뿐입니다. 이제는 버튼을 비활성화하고 활성화하는 작업도 서버에서 볼 수 있으며 완벽하게 작동합니다.

그러나 질문이 있습니다. 고객 측 검증은 나쁜 생각입니다. 비활성화 된 버튼은 사용자가 비어있는 itemValue 또는 제품 (내 경우에는)을 사용할 수 없도록하는 유일한 방법입니다 (DB의 경우 is_available = 0). 문제는 그것이 안전하다는 것을 보증하는 것일까 요?

편집 : 불행히도 버튼을 클릭하면 oneSelectMenu가 첫 번째 빈 값으로 바뀌어도 버튼이 활성화 된 것처럼 보입니다. 목록을 변경 한 후에 이전과 같이 다시 작동하고 다시 클릭하면 다시 시간이 걸립니다.

0

onclick은 클라이언트 측 속성이므로 관리되는 Bean 메소드 호출에 바인드하지 말아야하며 (누락 된 따옴표 제외) onclick=#{productBean.order}처럼 보이게됩니다. 이것은 문제의 원인 일 수 있습니다.

+0

지금 당장 당신 말이 맞아요. 사실, 나는 완전히 그 질문을 오해 했었습니다! – Nikhil

+0

글쎄, 난 100 % 확신하지 못 하겠지만, 이것처럼 보일 수있다. – dratewka

+0

onlick없이 IDE에서 복사했기 때문에 수동으로 stackoverflow 텍스트 필드에 추가했다. 그것은 ""with –

관련 문제