2013-08-30 6 views
0
내 JSF 2 응용 프로그램에서 아파치 코 몬즈 랭 3를 사용하기 위해 노력하고있어

을 포함하는 동안 오류를 분석, 나는 BalusC의 example태그 라이브러리

을 따라하지만 내 .xhtml 페이지에서이 라인을 포함 할 때 :

<%@taglib prefix="f" uri="/WEB-INF/functions.tld" %> 

페이지 코드를 구문 분석하는 동안 오류가 발생했습니다.

어떻게 문제를 해결할 수 있습니까?

답변

1

답변은 질문자가 JSP에서 JSF 1.x를 사용하는 것으로 알려진 질문을 대상으로했습니다. JSF 2.0 이후로 더 이상 사용되지 않는 Facelets의 기존 predecesor 인 JSP에 대한 구문이 있습니다.

functions.tld 파일을 모두 제거하십시오. 이어서

<?xml version="1.0" encoding="UTF-8"?> 
<facelet-taglib 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" 
    version="2.0"> 
    <namespace>http://example.com/functions</namespace> 

    <function> 
     <function-name>escapeJavaScript</function-name> 
     <function-class>org.apache.commons.lang.StringEscapeUtils</function-class> 
     <function-signature>java.lang.String escapeJavaScript(java.lang.String)</function-signature> 
    </function> 
</facelet-taglib> 
  • /WEB-INF/web.xml에 등록 :

    1. 우선은 /WEB-INF/functions.taglib.xml을 만들고 다음과 같이 기존의 고정 방법에 따라 지정 함수 선언 적절한 JSF 2.X Facelets의 방법은

      (이 단계는 JAR 파일의 /META-INF에있을 때 불필요합니다. 난 당신이 따라 발견 대답을 업데이 트했습니다

      <html ... xmlns:func="http://example.com/functions"> 
      ... 
      <h:outputScript>var foo = '#{func:escapeJavaScript(bean.foo)}';</h:outputScript> 
      

    참고 :

  • 마지막으로 선언하고 다음과 같이 사용) /WEB-INF/lib에 위치. 또한이 함수는 JSF 유틸리티 라이브러리 OmniFaces에 의해 #{of:escapeJS(bean.foo)} 상자에 이미 제공되어 있습니다 (사용중인 경우).