gpt4 book ai didi

java - JSF 2.0 转换器无法从单独的 jar 文件工作

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:00 25 4
gpt4 key购买 nike

我有一个自定义转换器来在 SelectOneMenu 组件中选择一个国家:

文件:address.jar

@FacesConverter(value="CountryConverter", forClass=Country.class)
public class CountryConverter implements Converter {

private CountryBean countryBean = CountryBean.getCountryService();

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return countryBean.find(value);
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null)
return ((Country)value).getcc_fips();
else
return null;
}

这是 xhtml 文本:

文件:项目根目录

  <h:selectOneMenu id="country" value="#{cc.attrs.addrEntity.country}">
<f:selectItem itemLabel="Please select one..."
noSelectionOption="true" />
<f:selectItems value="#{cc.attrs.addrBean.countries}"
var="model"
itemLabel="#{model.name}"
itemValue="#{model}"
noSelectionValue="&#8220;no selection&#8221;"/>
<f:converter ConverterId="CountryConverter"/>
</h:selectOneMenu>

我将转换器放在文件“address.jar”中,当我尝试打开页面写入地址时,它会响应说“表达式错误:名称为 MyCustomCoverter 的对象未找到。”。甚至想到当我将转换器复制到 xhtml 文件所在的项目时,它就可以正常工作。我该怎么做才能解决这个问题?

为什么它对单独的 jar 文件不起作用?

谢谢。

最佳答案

您必须在 JAR 文件中提供与 JSF 2.0 兼容的 /META-INF/faces-config.xml 文件,以便让 JSF 自动扫描 JAR 文件以查找带有 JSF 注释的类.

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
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"
version="2.0">
</faces-config>

如果没有该文件,JSF 将不会自动扫描 JAR 文件以节省性能,因此您的 @FacesConverter 将不会被发现或注册。

关于java - JSF 2.0 转换器无法从单独的 jar 文件工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8885851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com