Tôi muốn tạo thành phần JSF 2.0 tùy chỉnh nhưng không thể làm cho nó hoạt động. thành phần của tôi được định nghĩa như thế này:Thành phần tùy chỉnh JSF không được tìm thấy
@FacesComponent(value = "myCustomComponent")
public class CommaSeperatedOutput extends UIComponentBase { ... }
Các taglib trông như thế này:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2.0">
<namespace>http://www.company.com/tags</namespace>
<tag>
<tag-name>custom</tag-name>
<component>
<component-type>myCustomComponent</component-type>
</component>
</tag>
</facelet-taglib>
My khuôn mặt-config trông như thế này:
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
</faces-config>
tôi nhận được lỗi sau:
SEVERE: JSF1068: Component with componenttype myCustomComponent could not be instantiated.
javax.faces.FacesException: Expression Error: Named Object: myCustomComponent not found.
Không chắc chắn nếu nó là quan trọng, nhưng tôi đang sử dụng Spring 3.1 cùng với JSF 2.1 ở đây. Vì vậy, phụ thuộc được quản lý bởi Spring.
Bất kỳ ý tưởng gì đang xảy ra ở đây?
Giải pháp:
Có vẻ như mùa xuân là kẻ xấu ở đây. Tôi đã gỡ bỏ các chú thích @FacesComponent(value = "myCustomComponent")
từ các thành phần và xác định nó thay vì trong tôi khuôn mặt-config như thế này:
<component>
<component-type>myCustomComponent</component-type>
<component-class>com.company.jsf.component.CommaSeperatedOutput</component-class>
</component>
Bây giờ nó hoạt động.
này chắc chắn là một vấn đề mùa xuân. Phần JSF có vẻ ổn. Vì vậy, tôi đã thêm thẻ '[spring]' để bạn cũng nhận được sự chú ý từ các chàng trai mùa xuân. – BalusC
thay vì Thành phần tùy chỉnh, bạn cũng có thể dùng thử Component Component. –
Điều này làm việc một người bạn đời điều trị. – Makky