Tôi đang có một số nghi ngờ về ajax trên JSF.malformedXML: Trong khi cập nhật: adminUsersForm không tìm thấy
xhtml của tôi trông như thế này:
<h:body>
<h:form id="menuForm">
<h:outputLabel for="menu">Available actions: </h:outputLabel>
<h:selectOneMenu id="menu" value="#{menu.mainMenuItem}">
<f:selectItem itemLabel="Select an option..." itemValue="null" />
<f:selectItems value="#{menu.mainMenuItems}" />
<f:ajax render=":menuForm :adminUsersForm :loadInfoForm :viewFilesForm" />
<!-- <f:ajax render="@all" /> -->
</h:selectOneMenu>
</h:form>
<h:form id="adminUsersForm"
rendered="#{menu.mainMenuItem == 'Admin users.'}">
<h:commandButton value="Button 1" />
</h:form>
<h:form id="loadInfoForm"
rendered="#{menu.mainMenuItem == 'Load info.'}">
<h:commandButton value="Button 2" />
</h:form>
<h:form id="viewFilesForm"
rendered="#{menu.mainMenuItem == 'View files.'}">
<h:commandButton value="Button 3" />
</h:form>
</h:body>
Khi tôi sử dụng <f:ajax render=":menuForm :adminUsersForm :loadInfoForm :viewFilesForm" />
tôi nhận được lỗi malformedXML, mặt khác khi tôi sử dụng <f:ajax render="@all" />
đúng <h:form>
rendering.
Có gì xảy ra ở đây? Tôi đọc rằng bằng cách sử dụng ajax, chúng tôi có thể hiển thị các thành phần chỉ bên trong cùng một hình thức , nhưng nếu chúng tôi sử dụng :componentID
thì có thể kết xuất lại thành phần ajax- bên ngoài biểu mẫu.
Cảm ơn trước và có thể đó là câu hỏi cơ bản nhưng tôi rất mới với JSF và cố gắng tìm hiểu.
Ok, đã hiểu. Có quá nhiều sự khác biệt giữa ' ' và ' ' ?? Vì tùy chọn thứ hai hoạt động ngay cả khi không có thành phần cha mẹ nào luôn hiển thị. Chỉ muốn có khái niệm rõ ràng. THanks –
BRabbit27
Sự khác biệt chính là trong dữ liệu được chuyển. Nếu bạn có nhiều nội dung khác bên ngoài các biểu mẫu, thì '@ all' sẽ chuyển dữ liệu không cần thiết làm cho kích thước phản hồi lớn hơn, do đó làm cho nó chậm hơn. Ngoài ra, '@ all' có cùng một vấn đề như được mô tả trong đoạn cuối của câu trả lời, bạn vẫn cần xác định rõ ràng các ID biểu mẫu trong' render'. – BalusC
@BalusC Cảm ơn câu trả lời này, tôi đã hiểu vấn đề là gì. –