2011-04-06 3 views
1

확인 팝업을 생성하는 명령 단추가 있습니다. 확인 텍스트는 메시지 묶음에서 가져옵니다. 확인에 매개 변수를 전달할 수 있습니까?JSF 리소스 번들 매개 변수가 javascript에 있습니까?

<h:commandButton value="#{tkmsg.addAccount}" action="#{ebfAccountControllerBean.specifyEbfAddAccount}" 
         onclick="return confirm('#{tkmsg.confirmAddAccount}');"> 
      <f:param value="this account"/> 
      <f:param value="this email"/> 
</h:commandButton> 

을하지만이 작동하지 않습니다

이 내가 노력하고 있습니다 것입니다. 난 그냥

Are you sure you want to add account {0} with email {1}? 

매개 변수 만이 outputText 또는 OutputFormat 작업 있지? 이것을 할 수있는 다른 방법이 있습니까? 내 다음 단계는 "이 계정"을 양식의 데이터로 대체하는 것입니다.

답변

3

실제로하고있는 일은 그런 식으로 작동하지 않습니다. JSF는 f:param 태그를 해당 EL 표현식과 관련시킬 방법이 없습니다. 생각해 보면 인간이라 할지라도 이것을 추측 할 수는 없을 것입니다.)

메시지를 EL을 통해 액세스 할 수있는 것으로 미리 만들 수 있습니다. 토마 호크 미사일 버퍼 :

<t:buffer into="#{buffer['confirm']}"> 
    <h:outputFormat value="#{tkmsg.confirmAddAccount}"> 
     <f:param value="this account"/> 
     <f:param value="this email"/> 
    </h:outputFormat> 
</t:buffer> 

#{buffer} 단순히 요청 범위와 관리 빈으로 선언 된 hasmap이다. 이 후에는 javascript 문에서 #{buffer['confirm']}을 참조 할 수 있습니다.

2

Arjan이 좋은 예를 제시했습니다. 또 다른 방법은 직접 JS 함수를 작성하는 것입니다. 다음은 새로운 format() 함수로 JS String 프로토 타입을 확장하는 기본 킥오프 예제입니다. 다음과 같이

<script> 
    String.prototype.format = function() { 
     var args = arguments; 

     return this.replace(/\{(\d+)\}/g, function() { 
      return args[arguments[1]]; 
     }); 
    } 
</script> 

를 사용

onclick="return confirm('#{tkmsg.confirmAddAccount}'.format('this account', 'this email'));" 
관련 문제