ส่วนตัวฉันจะใช้ตัวเลือก # 2 ในขณะที่ฉันรู้ว่ามันเป็นไปได้ที่จะแก้ปัญหาโดยใช้ EL และรับบางส่วนของเอกสาร xhtml ที่ใช้ฟังก์ชั่นหรือ ui: params ดูเหมือนว่ามันจะขาดความสะดวกในการพกพา
หากนักพัฒนาคล่องแคล่วทั้งใน EL และ Java และเป็นเจ้าของทั้ง xhtml และ Java beans ดูเหมือนว่าจะไม่เหมาะสมที่จะใช้ EL เพื่อทำการประเมินตามเงื่อนไขด้วยขนาด> 1
ดูเหมือนว่าจะมีประโยชน์มากเกินไปสำหรับการนำไปใช้ในฝั่ง Java:
- ความสามารถในการพึ่งพาคอมไพเลอร์ IDE +
- ใช้ค่าคงที่หรือ enums (สำหรับ "dog" และ "bark") โอกาสที่พวกมันจะถูกใช้ที่อื่นในรหัสสำหรับการเปรียบเทียบเช่นกัน ... ถ้าค่า String เปลี่ยนไปมันสนุกจริง ๆ ที่จะต้องแทนที่ทุก ๆ ค่าของมันด้วยตัวเอง ฐานรหัส
- แทนที่จะต้องไปยังหน้าเว็บที่เป็นปัญหาด้วยข้อมูลที่เหมาะสมฉันสามารถใช้ตรรกะโดยใช้การทดสอบหน่วย
หนึ่งในข้อโต้แย้งหลักที่ฉันได้ยิน (ด้านนอกของสแต็ค) ในความโปรดปรานของตัวเลือก 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: เลือก ... แต่ฉันเคยเห็นสิ่งนี้มาก่อน
ในตอนท้ายของวันนี้ยังคงเป็นตรรกะ 'มุมมอง' ในทางทฤษฎีเนื่องจากมันเป็นตัวกำหนดสิ่งที่ได้รับการแสดงจริงดังนั้นจึงมีการโต้แย้งแนวคิดที่ควรมีชีวิตอยู่ใน xhtml ปัญหาที่ฉันพบคือการรวมตรรกะเช่นนี้ในเทมเพลตมุมมองสามารถทำให้เลย์เอาต์เข้าใจได้ยากขึ้นในระยะยาวและฉันยังไม่เห็นว่าวิธีการแก้ปัญหานี้มีประโยชน์ใด ๆ มากกว่าการใช้ Java การนำถั่วไปใช้
barking animals
ฉันจะทำให้วิธีการที่เรียกว่าเพราะมันมีอยู่แล้ว ถ้ามันเป็นตรรกะของมุมมองที่คุณใช้กับหลาย ๆ ไซต์คุณสามารถสร้างฟังก์ชั่น el จากมันได้