<f:attribute>
은 HTML 코드를 생성하는 동안 웹 서버에서 실행되는 JSF 태그입니다. JavaScript는 웹 서버에서는 실행되지 않지만 JSF에서 생성 한 모든 HTML 코드를 검색 한 후 웹 브라우저에서 실행되는 클라이언트 측 언어입니다. 그러나 당신은 그들이 "동행"한다고 생각하는 것 같습니다. 이것은 사실이 아닙니다.
염두에 두었던 것을 달성하려면 기본적으로 콩 속성에 바인딩 된 <h:inputHidden>
을 제공해야하며 JS가 원격 명령 요청이 시작되기 전에 채우도록해야합니다.
예.
<h:form id="form">
<h:inputHidden id="galaxie" value="#{bean.galaxie}" />
<p:remoteCommand ... onstart="$('#form\\:galaxie').val(jstest())" process="@form" ... />
</h:form>
또는 요청 매개 변수 맵을 나타내는 JS 객체를 받아들이는 원격 명령 함수 인수로 전달하는 것이 훨씬 쉽습니다. 주어진
<h:form>
<p:remoteCommand name="foo" ... />
</h:form>
당신이 단지 수 :
foo({ galaxie: jstest() });
당신은 @ManagedProperty
또는 ExternalContext#getRequestParameterMap()
하여 수집 할 수 있습니다.
업데이트는 : PrimeFaces 3.3 이후, <p:remoteCommand>
기능의 매개 변수에 대한 구문이 변경되었습니다. 당신이 적어도 PrimeFaces 3.3을 사용하는 경우, 다음 함수 호출은 다음과 같아야합니다
foo([{ name: 'galaxie', value: jstest() }]);
도 Pass parameter to p:remoteCommand from JavaScript를 참조하십시오.
구성 요소의 특성은 클라이언트 수준이 아니라 서버 수준에서 선언되고 설정됩니다. 즉, 이런 방식으로 서버 측 구성 요소 속성에 클라이언트 측 값을 제출하지 않습니다. 아마 달성하기위한 더 좋은 방법이 있기 때문에 구체적으로 달성하려는 것은 무엇입니까? –
감사합니다. 예. 생각했습니다 ... –