0

我在 Tomcat 中运行 JSF 应用程序。它有 3 个由render属性链接的列表。

<h:selectOneMenu id="selectedCategory" value="#{converterBean.selectedCategory}">
    <f:ajax execute="selectedCategory" render="selectedFrom"/>
    <f:selectItems value="#{converterBean.categories}"/>
</h:selectOneMenu>
<h:selectOneListbox id="selectedFrom" value="#{converterBean.selectedFrom}" size="5">
    <f:selectItems value="#{converterBean.fromList}"/>
    <f:ajax execute="selectedCategory selectedFrom" render="selectedTo"/>
</h:selectOneListbox>
<h:selectOneListbox id="selectedTo" value="#{converterBean.selectedTo}" size="5">
    <f:selectItems value="#{converterBean.toList}"/>
</h:selectOneListbox>

当我点击selectedCategory它呈现selectedFrom罚款。当我在其中选择项目时selectedFrom,会出现如下错误。

严重:javax.el.E​​LException:/converter.xhtml @44,53 value="#{converterBean.toList}":在 com.primesystems.beans.ConverterBean 类型上读取“toList”时出错

我想获得更多的堆栈跟踪,但在调试器中运行,为与 tomcat 相关的附加程序添加 log4j 并用 try/catch 包围我的 bean 方法是不好的。

我试过 mojarra 版本 2.1.7 和 2.2.0-m05 都有相同的行为。

我的代码存在问题,并且在 converterBean.getToList 方法中捕获异常我能够捕获堆栈跟踪。所以我遇到的问题得到了解决。

我想在下面发表评论。下面的定位器被注入到转换器 bean 中,并且由于 Conveter 类不可序列化,我添加了如下逻辑,因为我有时看到与序列化相关的异常。

@ManagedBean(name="serviceLocater")
@ApplicationScoped
public class LocalServiceLocater implements ServiceLocater, Serializable {
transient private Converter converter;
public LocalServiceLocater() {
    converter = new Converter();
}
public Converter getConverter() {
    // TODO Auto-generated method stub
    return converter;
}

private void readObject(java.io.ObjectInputStream in)
        throws IOException, ClassNotFoundException {
        in.defaultReadObject();
        converter = new Converter();
}

}

我还想再添加一个问题。当我选择category时,from listto list都需要更新。目前我已经对它们进行了编码,希望它们能够级联,但它只从 list更新。我曾尝试类别 ajax 渲染属性中进行渲染和列出, 但随后它发送类别,旧的,而我希望它改为发出两个请求。首先从列表中填写类别带有类别的第二个请求,从填充到列表

4

0 回答 0