2011-08-19 3 views
0

내가 같이 rich:findComponent를 사용하여 동적 온 클릭 이벤트를 추가하는 것을 시도하고있다 :자바 스크립트 함수 findComponent 리치

<font class="topFirstTablehdCategory2" style="font-size: 12px; cursor: pointer;" onclick="#{rich:findComponent('benchmarkEndDate').value = channelPerformanceController.resetDate}"> 
    RESET 
</font> 

을하지만 내가 기꺼이 무엇

com.sun.el.parser.ParseException: Encountered "=" at line 1, column 48. 

을 얻고, 문자열 값을 설정하는 것입니다 ID가 benchmarkEndDaterich:calender으로 resetDate 필드의 ChannelPerformanceController 클래스로 제공됩니다.

function setResetDate(id, date) { 
    #{rich:findComponent('benchmarkEndDate').value} = date; 
} 

가 작동하지 않습니다 :

는 또한 JSP 페이지에서 자바 스크립트 방법을 쓰기. 그것은으로 호출됩니다 onclick="setResetDate('benchmarkEndDate', '#{channelPerformanceController.resetDate}')"

그것은으로 브라우저에서 렌더링된다

function setResetDate(id, date) { 
     2011-03-24 00:00:00.0 = date; 
} 

이 방법 : 내가 잘못 뭐하는 거지

function setResetDate(id, date) { 
     document.getElementById() = date; 
} 

:

function setResetDate(id, date) { 
     document.getElementById(#{rich:clientId(id)}) = date; 
} 

으로 변경입니다 ? 이것을 어떻게 할 수 있습니까?

+0

시도해 보셨습니까? function setResetDate (id, date) { "# {rich : findComponent ('benchmarkEndDate'). value}"= 날짜; } - 식 – reevesy

+0

주위에 인용 부호를 둡니다. 함수로 렌더링됩니다. setResetDate (id, date) { \t \t \t "2011-03-24 00 : 00 : 00.0"= 날짜; \t \t} –

답변

2
  • JavaScript는 클라이언트에 의해 실행됩니다.
  • 표현식 언어 표현식은 브라우저에서 마크 업을 보내기 전에 서버에서 평가됩니다.

#{foo = bar} 유효한 EL 식 아니다. =은 EL에서 유효한 연산자가 아닙니다. EL에는 대입 연산자가 없습니다. EL을 통해 값을 할당하는 유일한 방법은 (거의 독점적으로 JSF 입력 컨트롤을 통해) 그들을 지원하는 속성에서 값 바인딩을 사용하는 것입니다.


이 식을 평가하는 경우 :이이 정의 된 경우이 표현은 빈을 만들기 위해 관리 빈 메커니즘을 사용하여, getAttribute("id")을 사용하여 찾고 request, sessionapplication 범위를 검색합니다

#{rich:clientId(id)} 

신분증. 이것이 평가되어 null을 돌려 주면 아무것도 렌더링되지 않습니다.


이 표현은 하지 평가 경우 : 그 다음은 템플릿 텍스트 (에 배치되고

#{rich:clientId(id)} 

아마 JSP 2.0/J2EE 1.4.)

EL 표현의 두 가지 유형이 있습니다 :

  • #{foo} - 이연 표현 : 단지 그들에게 수 속성 평가
  • ${foo}-즉시 표현 : 템플릿 텍스트에서 허용

JSP 2.1부터 템플릿 텍스트에 지연된 표현이있는 것은 번역 오류입니다. . 는 JSP 2.1 사양에서 : 특별히 구성 설정을 허용하지 않는

JSP 페이지에서 템플릿에 사용 된

#{ 문자 시퀀스 는 번역 오류를 트리거합니다. #{} 구문 JSP 2.1 이연 평가 독점적으로 을 연결하고 템플릿 텍스트의 맥락에서 이해가되지 않기 때문합니다 ​​(${expr} 구문을 사용하는 경우에만 즉시 평가 템플릿 텍스트에서 의미가 있습니다)입니다. 템플릿 텍스트에 태그 파일에서

, #{expr}는 태그 파일의 JSP 버전에 따라 처리됩니다 : 태그 파일의 JSP 버전이 오류가 발생하지 않습니다 템플릿 텍스트에서 2.0 이하, #{expr} 인 경우. 태그 파일의 JSP 버전은 이스케이프 또는 태그 파일 이 deferredSyntaxAllowedAsLiteral 태그 지시자 속성을 TRUE에 세트가 포함되어 있지 않은 텍스트, 오류가 발생합니다 템플릿 2.1, #{expr}보다 같거나 큰 경우.

일반적으로 #{foo} 표현식은 JSP 뷰의 경우 JSF 제어 속성에 있어야합니다.


서버 측 값을 변경하려면 양식 제출 및 작업 바인딩을 사용하십시오. RichFaces에서 AJAX을 통해이 작업을 수행 할 수 있습니다.