2014-05-09 4 views
0

너는 너의 범위 슬라이더 구성 요소를 통해 범위를 줄 수있는 양식을 만들려고하는데, 그 범위는 상한이나 정확하지 않은 상한선이다. > 1000). 범위의 선택성이 체크 박스를 통해 표시된다. 형태 부울 체크 박스, 텍스트 필드의 값 설정

나는 다음과 같은 사항을 가지고있다

<p:outputLabel value="From 1:" /> 
<p:inputText style="display: block;margin-bottom: 3px;" id="lower" value="#{dilution.lower}" /> 
<p:outputLabel value="To 1:" /> 
<p:inputText style="display: block;margin-bottom: 3px;" widgetVar="upp" id="upper" value="#{dilution.upper}" /> 
<p:outputLabel value="Greater than 1000" for="above1000" /> 
<p:selectBooleanCheckbox id="above1000" value="#{dilution.bigger}" valueChangeListener="#{dilution.above}" > 
    <p:ajax update="upper" /> 
</p:selectBooleanCheckbox> 
<h:outputText style="display: block;" id="displayRange" value="Choose from intervall 1:1 till 1:1000"/>       
<p:slider id="dfact" displayTemplate="For intervall 1:{min} till 1:{max}" for="lower,upper" range="true" step="1" minValue="1" maxValue="1000" /> 

체크 박스는 내가 1000로 변경 상한 텍스트 필드의 값을 부탁하고 선택하지 않은 경우, 나는 그것을 원하지 않는 선택하면 텍스트 필드의 값을 변경합니다.

거의 체크 박스에 부착 된 valueChangeListner를 사용하여 작업하려면이 옵션을 가지고있다.

후원 콩 dilution 내가 가진에서

에게 다음 valueChangeListner :

public void above(ValueChangeEvent event){ 
    if((Boolean)event.getNewValue()){ 
     upper = 1000; 
    }   
} 

텍스트 필드의 값을 설정 upper 1000 내 문제는 내가 일부 텍스트 필드의 값을 변경하는 경우는이 작업을 수행한다는 것입니다 다른 번호를 입력 한 다음 텍스트 상자의 선택을 취소하십시오. upper 백업 빈 값이 여전히 이전 시간에서 1000으로 설정되어 있기 때문에 나는이 추측하고있어

이다. 나는 이것이는 upper 구성 요소를 처리 할 수 ​​있도록 (따라서 텍스트 필드에 기록 된 내용에 따라 백업 빈 값을 변경)을하기 전에 것이라고 생각했기 때문에

<p:ajax update="upper" process="upper" /> 

:이 같은 아약스 호 처리에게 upper 구성 요소를 만드는 시도 최신 정보. 내가 할 때이 텍스트 필드는 전혀 설정되지 않습니다.

나는 자바 스크립트를 사용하여 서버에 대한 불필요한 호출을 피하면서 더 감각적으로 만들 수 있다고 생각했지만 어떻게해야하는지 알 수 없었다. 나는 widgetVar 어떻게 든 사용하는 것을 고려했다. 그러나 나는 그것을 사용하는 방법을 보여주는 어떤 문서를 찾을 수 없다.

또한 슬라이더가 설정된 텍스트 필드의 값을 변경하면 좋지만 중요하지 않습니다.

이 작업을 수행하는 가장 좋은 방법 일 것입니다 무슨 어떤 힌트?

답변

3

당신이하려는 방법은 옳지 않다.

나는 예제를 작성 다시 한위한

XHTML 코드

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:fn="http://java.sun.com/jsp/jstl/functions"> 

<h:head> 
    <title>Demo</title> 
    <script type="text/javascript"> 

</script> 
    <link rel=" stylesheet" type="text/css" href="css/style.css"></link> 

    <h:body> 
     <h:form id="form"> 
      <p:panel header="Form"> 

       <h:panelGrid columns="2"> 

        <h:outputText value="From:" /> 
        <p:inputText value="#{testBean.lower}" id="lower"></p:inputText> 

        <h:outputText value="To:" /> 
        <p:inputText value="#{testBean.upper}" id="upper"></p:inputText> 

        <h:outputText value="Change Upper to Max" /> 
        <p:selectBooleanCheckbox value="#{testBean.maxUpper}"> 
         <p:ajax event="change" listener="#{testBean.chageMax}" 
          update=":form:upper"></p:ajax> 
        </p:selectBooleanCheckbox> 

        <h:outputText style="display: block;" id="displayRange" 
         value="Choose from intervall 1:1 till 1:1000" /> 
        <p:slider id="dfact" 
         displayTemplate="For intervall 1:{min} till 1:{max}" 
         for=":form:lower,:form:upper" range="true" step="1" minValue="1" 
         maxValue="1000" /> 
       </h:panelGrid> 

      </p:panel> 
     </h:form> 

    </h:body> 

</h:head> 

</html> 

관리 빈 (다시 콩)

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

@ManagedBean(name = "testBean") 
@SessionScoped 
public class TestBean { 

    private int lower; 
    private int upper; 
    private boolean maxUpper; 

    public void chageMax() { 
     if (maxUpper) { 
      upper = 1000; 
     } else { 
      upper = 0; 
     } 
    } 

    public boolean isMaxUpper() { 
     return maxUpper; 
    } 

    public void setMaxUpper(boolean maxUpper) { 
     this.maxUpper = maxUpper; 
    } 

    public int getLower() { 
     return lower; 
    } 

    public void setLower(int lower) { 
     this.lower = lower; 
    } 

    public int getUpper() { 
     return upper; 
    } 

    public void setUpper(int upper) { 
     this.upper = upper; 
    } 
} 

생성 된 출력

Initial page load

When tick box selected

Using Slider

나는 그것이 도움이되기를 바랍니다.

+0

답해 주셔서 감사합니다. 그러나 확인란의 선택을 취소하면 상한선을 0으로 설정하지 않습니까? 나는 상자를 체크 해제하기 전에 텍스트 필드에 쓰여진 가능한 사용자 입력을 덮어 쓰는 것을 원하지 않는다. – numfar

+0

untick에서 입력 텍스트의 상한을 재설정 하시겠습니까 ?? – Makky