개인적으로 옵션 # 2를 사용합니다. EL을 사용하여 문제를 해결하고 함수 또는 ui : params를 사용하여 xhtml 문서에서 약간의 재사용을 얻는 것이 가능하다는 것을 알고 있지만 실제로 Java bean 구현의 이식성, 유지 관리 성 및 테스트 가능성이 부족한 것 같습니다.
개발자가 EL과 Java에 능숙하고 xhtml과 Java bean을 모두 소유하고 있다면 EL을 사용하여 크기가 1보다 큰 조건부 평가를 수행하는 것은 의미가 없습니다.
Java 측에서 구현하면 너무 많은 이점이있는 것 같습니다.
- IDE + 컴파일러에 의존하는 능력
- 상수 또는 열거 형 ( "dog"및 "bark"의 경우)을 사용하면 비교를 위해 코드의 다른 곳에서도 사용될 가능성이 있습니다 ... 문자열 값이 변경되면 문자열 값이 변경되는 경우 코드베이스
- 적절한 데이터로 문제의 페이지를 탐색하는 대신 단위 테스트를 사용하여 논리를 연습 할 수 있습니다
옵션 1에 찬성하여 내가 들었던 주요 주장 중 하나는 다음과 같습니다.
"논리에서이 로직을 유지하면 컴포넌트가 렌더링되는 시점을 훨씬 쉽게 확인할 수 있습니다."
나는 이것이 경량이고 덜 복잡한 인생의 초기 단계에서 응용 프로그램의 경우 일 수 있음을 발견했습니다. 그러나이 방법을 더 큰 규모로 적용하고 더 작은 응용 프로그램이 성숙 해지면 쥐에게 조건부 둥지가 생겨 유지하기가 악몽이 될 수 있습니다. 다음은 내가 야생에서 본 것과 비슷한 몇 가지 예입니다.
<h:outputText value="grrr"
render="#{animal.type == 'dog' or animal.type == 'cat' or animal.type == 'horse'
or animal.type == 'pony' or animal.type == 'mule' or animal.type == 'lion'
or animal.type == 'tiger' or (animal.type == 'bird'
and animal.subType == 'macaw') or .... continue this for another line or two}"
/>
또는 내가 좋아하는, 서로 다른 독점적 인 렌더링 조건을 가진 여러 구성 요소를 사용하여 표시 할 수있는 다른 값을 나타냅니다.
<h:outputText value="grr" render="#{theMonstrosityFromPreviousExample} />
<h:outputText value="cry"
render="#{animal.type == 'human' and animal.subType == 'baby'}" />
<h:outputText value="yo"
render="#{animal.type == 'human' and animal.subType == 'teenager'}" />
<h:outputText value="hello"
render="#{animal.type == 'human' and animal.subType == 'adult'}"/>
한 번에 최대 4 개의 텍스트를 표시 할 수 있습니까? 언뜻보기에 각 상태를 확인해야합니다. 부수적으로 나는이 예제가 ac : choose에 넣을 수 있기 때문에 디자인이 좋지 않다는 것을 알고 있습니다. 그러나 나는 이것을 전에 보았습니다.
마지막 날에는 이것이 실제로 표시되는 것을 결정하기 때문에 이론적으로 '보기'논리입니다. 그래서 xhtml에 있어야하는 개념적 논증이 있습니다. 내가 찾은 문제는보기 템플릿에 이와 같은 논리를 포함하면 레이아웃을 장기적으로 이해하기가 훨씬 어려울 수 있지만 문제를 해결하는이 방법이 Java를 사용하는 것보다 실질적인 이점을 가지고 있음을 아직 알지 못했습니다 빈 구현.
barking animals
가있는 경우 해당 메소드가 이미 존재하기 때문에 해당 메소드를 호출합니다. 여러 사이트에서 사용하는 뷰 로직 인 경우 뷰 로직을 사용하여 el 함수를 작성할 수 있습니다.