내 문제에 대한 세 가지 해결책을 찾았습니다. 첫 번째는 PrimeFaces
을 사용하고 두 번째는 MyFaces Tomahawk
을 사용하고 세 번째는 문자열 입력을 사용하여 JSF Verbatim UI component
을 사용하는 것입니다. 곧 코드 샘플과 솔루션 간의 차이점을 나열하겠습니다.
1 PrimeFaces 하나는 프로그래밍 방식으로 즉석 FIELDSET에를 만들 FIELDSET 클래스를 사용할 수있는 PrimeFaces 구성 요소 스위트의 포함 (그리고 아파치 코 몬즈는 FileUpload 의존성의)와
. 나쁜 점은 PrimeFaces Fieldset 구성 요소가 PrimeFaces JavaScript 파일에 의존하므로 일반 필드 집합 대신 필드 집합과 JavaScript 포함이 너무 많이 발생한다는 것입니다. 토마 설정
import org.primefaces.component.fieldset.Fieldset;
...
form.getChildren().add(new Fieldset());
2에서 MyFaces 토마
UI 컴포넌트는, 프로그램 된 HTML을 만들 FIELDSET 사용될 수 FIELDSET 성분 온다. Tomahawk의 Fieldset이 사용될 경우 일반적이고 멋진 Fieldset 태그를 얻을 수 있습니다. 여기서 나쁜 점은 Tomahawk이 MyFaces의 확장이며 MyFaces 자체가 표준 JSF와 함께 사용되어서는 안되는 전체 JavaServer Faces 구현이라는 것입니다.
import org.apache.myfaces.custom.fieldset.Fieldset
...
form.getChildren().add(new Fieldset());
3 JSF 축어 UI 부품
표준화 해키 및 방법은 완전 일치 JSF UI 구성 요소를 사용하는 것이다. 축 어적 구성 요소 내에서 필요한 모든 HTML을 넣을 수 있습니다.이 작은 트릭을 통해 우리는 그대로 태그를 만들 수 있습니다 위의 코드는 FIELDSET의 HTML 요소를 렌더링
UIOutput fieldset = new UIOutput();
fieldset.setRendererType("javax.faces.Text");
fieldset.getAttributes().put("escape", false);
fieldset.setValue("<fieldset></fieldset>");
을하지만, 문자열 및 프로그래밍 방식으로 해당 태그에 아무것도 추가 할 수 없습니다 폐쇄되는 문자열 내부의 태그이기 때문에, 그래서이 작동하지 않습니다
form.getChildren().add(fieldset);
요소의 중첩에 사용할 수있는 HTML 태그를 생성하려면, 각각의 개폐 태그이 솔루션 매우 텍스트 무거운를 만드는 자신의 Varbatim 구성 요소에 넣어해야합니다
UIOutput fieldsetStart = new UIOutput();
fieldsetStart.setRendererType("javax.faces.Text");
fieldsetStart.getAttributes().put("escape", false);
fieldsetStart.setValue("<fieldset>");
UIOutput fieldsetClose = new UIOutput();
fieldsetClose.setRendererType("javax.faces.Text");
fieldsetClose.getAttributes().put("escape", false);
fieldsetClose.setValue("</fieldset>");
HtmlInputText inputText = (HtmlInputText) app.createComponent(HtmlInputText.COMPONENT_TYPE);
form.getChildren().add(fieldsetStart);
form.getChildren().add(inputText);
form.getChildren().add(fieldsetClose);
결론 : 표시된 솔루션의
없음 정말 우아한 없다. PrimeFaces와 MyFaces는 많은 의존성을 가지며 표준 JEE 방식은 실제로 많은 노력을 필요로합니다. document.createElement("fieldset");
과 같이 알 수없는/사용자 정의 HTML 요소를 생성하는 좋은 솔루션을 찾고자했습니다.
누구나 할 수있는 방법을 알고 있다면 해결책을 게시하십시오.