2017-01-18 3 views
0

웹 응용 프로그램에 숫자 패널을 만들어야하지만 텍스트 영역에 단추의 값을 삽입 할 수있는 작업을 찾을 수 없습니다. 누군가 나를 도울 수 있습니까?웹 응용 프로그램 용 숫자 패널

<p:commandButton value="1" id="btn1"></p:commandButton>      
<h:panelGrid id="grid" cellpadding="5" columns="1" > 
<p:inputText id="liczby" style="width:245px" /> 

나는 onclick 기능은 그렇게 할 수 읽었습니다하지만 난 그것을 사용하는 방법을 모르겠어요.

+0

StackOverflow에 오신 것을 환영합니다. 여기에서 시작하십시오 : https://stackoverflow.com/tags/jsf/info 튜토리얼 섹션. 게시하는 3 줄의 코드 중 2 줄에는 약 4 가지가 잘못되었습니다. 기본적인 것들 ... – Kukeltje

답변

0

p : commandButton을 사용하여 서버의 Java Object 상태를 업데이트 한 다음 p : inputText를 해당 값에 바인딩 할 수 있습니다.

서버 요소에 대한 요청없이 button 요소가 DOM의 텍스트 요소를 즉시 업데이트하는 클라이언트 측 처리를 수행하는 것이 더 효과적 일 수 있지만, JSF를 선택하면 더 어려워집니다.

대상으로하는 뷰 요소의 동적으로 생성 된 ID를 안정적으로 예측할 수 없기 때문에 ID로 선택할 수 없습니다. 클래스를 사용하여 inputText를 선택하고 클라이언트 측의 값을 수정할 수 있습니다. 조금 어색하지만 작동해야합니다.

<p:commandButton onclick="document.getElementsByClassName('myUniqueClass')[0].value = this.value" /> 
<p:inputText styleClass="myUniqueClass" /> 

참고 :

  • 당신은 프레젠테이션 내에서 그 기능을 선언하는 안티 패턴의로, 다른 곳에서 온 클릭 기능을 이동할 수 있습니다.
  • 다른 요소 'myUniqueClass'의 이름을 지정하지 않으므로 예상 한 요소를 정확히 얻을 수 있습니다. 이것은 또한 약간의 반 패턴입니다. 나는 primefaces가 대신 ID를 정의하는 방법을 제공한다고 믿는다. 즉, 동적으로 생성 된 ID (즉, 현재 ID에 삽입 된 부모 요소 ID를 얻지 못한다)를 벗어날 수 있고, 이는이 안티 patterm을 해결하는 좋은 방법 일 것이다
+0

안녕하세요, 'JSF를 선택하면 더 어려워서', 나는 부분적으로 만 동의합니다. 클라이언트 쪽 html을 알고 jsf가 html 생성자 일 뿐이라는 사실을 알고 있다면 어렵지 않습니다 (jsf없이 수행하는 것과 거의 동일). PrimeFaces commandButton을 사용하면'type = "button"'을 추가하면 서버에 아무것도 보내거나 아무것도 업데이트하지 않고도 클라이언트 측에서 자바 스크립트를 인식 할 수있는 버튼이됩니다. – Kukeltje

+0

'신뢰할 수없는'사용 ID와 관련하여 ID를 사용하려면 모든 관련 위치에 명시적인 ID를 할당해야합니다. 소스를보고 네이밍 컨테이너가 무엇인지 아는 것은 할 일/알 수 있습니다. 도움이 필요하면 [ 'NoAutoGeneratedIdViewHandler'] (http://showcase.omnifaces.org/viewhandlers/NoAutoGeneratedIdViewHandler)를 사용하여 Omnifaces가 구출됩니다. – Kukeltje