小编And*_*ler的帖子

selectManyCheckbox LazyInitializationException进程验证

看来如果你使用由hibernate代理的集合支持的selectManyCheckbox,你将遇到可怕的LazyInitializationException问题.这与支持bean的状态无关!

在调试Mojarra 2.1后,我发现如果你没有包含属性collectionType,它将尝试在进程验证阶段克隆支持值类,在我的例子中是PersistentSet.当然,为此添加任何值都会导致LazyInitializationException.

我的问题是你是否认为这是过程验证阶段的合理行为?

克隆集合类的更好算法是查看接口并从java.util实例化已知类.

jsf mojarra

12
推荐指数
2
解决办法
2057
查看次数

在Mojarra JSF 2.1中解决错误的INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL

我知道在JSF2中有很多关于将空字符串转换为null的帖子.通常的处方是将以下内容添加到web.xml中.

<context-param>
  <description>Does not appear to work</description>
  <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
  <param-value>true</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

这根本不起作用 - 根本没有.然后我创建了一个自定义字符串转换器来测试它是否可行.我明确地将它作为转换器添加到我的inputText中(否则它在空白时不会触发).

当INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL设置为true时,转换器接收null,输入文本的setter仍然接收"".

当INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL设置为false(或注释掉)时,转换器接收""并且输入文本的setter接收""(即使在转换器返回null之后).

@FacesConverter(forClass=java.lang.String.class, value="emptyStringToNull")
public class StringConverter implements Converter, Serializable {
    private static final long serialVersionUID = -1121162636180944948L;
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value == null || value.trim().isEmpty()) {
            return null;
        }
        return value;
    }

    public String getAsString(FacesContext context, UIComponent component, Object object) {
    if (object == null)
        return null;

    return object.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过(无济于事)在getAsObject中显式设置组件提交的值:

if (component instanceof EditableValueHolder)
    ((EditableValueHolder) component).setSubmittedValue(null);
Run Code Online (Sandbox Code Playgroud)

我正在使用JBoss6(6.1的快照)和JSF …

jsf-2 mojarra jboss6.x

11
推荐指数
1
解决办法
8225
查看次数

标签 统计

mojarra ×2

jboss6.x ×1

jsf ×1

jsf-2 ×1