2012-02-24 1 views
2

을 포함, 여기 내 불행한 제한이 있습니다 : 나는 JSF 1.2을 사용하고JSF 1.2 사용자 정의 구성 요소 : 내 질문을 시작하기 전에

  1. 하지 2; 그래서 복합 구성 요소가 없습니다.
  2. facelets 대신 렌더링을 위해 JSP를 사용하고 있습니다. 그래서 그 복합 구성 요소 중 하나도 아닙니다.
  3. 는 나는 어떤 제 3 자 태그 라이브러리 이러한 제한이 돌에 설정되어

(richFaces, iceFaces 등)을 사용하도록 허용하고 있지 않다.

이제 내 질문으로 이동하십시오. 현재 주소 생성을 처리하는 JSP subview이 있습니다. 백킹 빈 (backing bean)과 함께 많은 자바 스크립트가 있습니다. 이 페이지는 절대로 직접 사용되지 않습니다. 대신 <jsp:include />을 사용하여 포함 시켰습니다.

그러나 변경할 수있는 몇 가지 특성이 있습니다. 예를 들어 카운티가 필요하며 주소 스크럽 등을하고 있습니까? 이렇게하려면 맞춤 구성 요소를 사용하는 것이 합리적입니다 (제 생각에?). 그러나, 나는 이것을하기위한 최선의 방법이 확실하지 않습니다.

내가 할 수있는 한,이 JSP를 복합 구성 요소로 변환하고 완료해야합니다. 그러나, 그것은 나의 제한에 기반을 둔 정말로 옵션이 아니다.

내 옵션에는 어떤 것이 있습니까? 자바 스크립트가 관련되어 있지 않다면 그렇게 어렵지 않을 것입니다. 나는 나의 설명이 모호하다는 것을 안다; 그러나 나는 직접적인 대답보다 더 많은 지침을 찾고있다. 나는 javascript 등으로 커스텀 JSF 1.x 컴포넌트와 같은 것을 검색했다. 그러나 나는 많은 좋은 기사를 찾지 못했다.

미리 감사드립니다.

+2

그들은 권투 글러브를 착용하면서 후추 밖으로 날 뛰기를 선택하길 기대하는 것처럼 들립니다. 거기 있었어. 양식 필드에 사용자 지정 유효성 검사를 추가하려는 것 같습니다. 진짜 질문은, 왜'JSP로 : include'가 이것을 버리지 않았는가하는 것입니다. IMF가 깨진 JSF1.2 스펙 하에서 커스텀 컴포넌트를 작성하는 방법을 배우는 능력 이외에, 커스텀 컴포넌트는 테이블에 어떤 것을 가져다 줄까요? –

+0

너무 쉽다면! JSF 유효성 검사기를 사용하여 유효성 검사가 수행되지 않습니다. 필수 속성을 정의조차하지 않습니다. 그들은 그것을 바꾸고 싶지 않습니다. 유효성 검사를 넘어서는 다른 많은 사용자 지정 작업이 필요합니다. 예를 들어 각 주소는 contactId (연락처 테이블의 PK)가 필요로하는 다른 연락처에 연결할 수 있습니다. 표시 논리도 있습니다.이 주소는 우편 주소가 아닌 위도/경도를 사용하여 정의 된 법적 주소 일 수 있습니다. –

+0

@ 잭 ... 방금 당신이 동료 Yinzer 인 것으로 나타났습니다. 기회가 생기면 채팅에서 나를 만나십시오, 나는 우리를위한 방을 만들 것입니다. 나는 이것을 통해 이야기하고 싶다. –

답변

2

JSP 태그 파일을 만듭니다. JSTL은 "보기 빌드 시간"태그 Facelets의에서와 같이도 여기에 있음을

<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> 
... 
<my:foo showAddress="true" /> 

참고 : (필요한 추가 XML 구성) 다음 없기 때문에

/WEB-INF/tags/foo.tag

<%@ tag body-content="empty" %> 
<%@ attribute name="countryRequired" required="false" type="java.lang.Boolean" %> 
<%@ attribute name="showAddress" required="false" type="java.lang.Boolean" %> 

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %> 
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

<h:panelGrid columns="2"> 
    <h:outputLabel for="country" value="Country" /> 
    <h:inputText id="country" value="#{bean.country}" required="${countryRequired}" /> 

    <c:if test="${showAddress}"> 
     <h:outputLabel for="address" value="Address" /> 
     <h:inputText id="address" value="#{bean.address}" /> 
    </c:if> 
</h:panelGrid> 

선언하고 사용 . 또한 #{}을 사용하여 JSP 태그 속성을 참조 할 수 없습니다.

+0

이것은 훌륭한 해결책 인 것 같습니다. 이 속성을 추가 할 때도 EL을 사용할 수 있습니다. 맞습니까? '

+0

IBM WAS 7 (JSF 1.2, JSP 2.1)에서는 작동하지 않습니다. – Stefan