当前位置: 首页 > 知识库问答 >
问题:

奇怪的行为与内内

骆照
2023-03-14

我有一个ui显示的数据表:repeat。因为我希望用户能够在每行的基础上更改数据,所以每行都包含在一个h:form中。最后,每个h:form都有一个带有f:ajax标记的按钮。我的行为越来越不一致。

<ui:repeat value="#{importManager.items}" var="item" varStatus="status">
    <h:form>
        <tr>
            <td>
                <h:outputText value="#{status.index}"/>
            </td>
            <td>
                <h:inputText id="title" value="#{item.title}" styleClass="#{item.validTitle ? 'valid' : 'invalid'}"/>
            </td>
            <td>
                <h:inputText id="artist" value="#{item.artist}" styleClass="#{item.validArtist ? 'valid' : 'invalid'}"/>
            </td>
            <td>
                <h:commandButton value="#{importMessages.submit}">
                    <f:ajax execute="@form" render="@all" listener="#{importManager.publish(item)}"/>
                </h:commandButton>
            </td>                           
        </tr>
    </h:form>
</ui:repeat>

上述方法可行,但带宽显然不便宜。

如果我将render=“@all”更改为render=“@form”,Firebug显示发送的部分响应正常,但我的浏览器(Firefox)神秘地没有显示它。所以我猜它(浏览器)没有找到要更新的元素?

如果我将执行="@form"更改为执行="@all",我会遇到非常奇怪的行为,即数据丢失,受影响的字段变成空白。

支持bean非常简单:

    public void publish(final Item item)
    {
        Set<ConstraintViolation<Item>> violations = item.validate();

        if (violations.isEmpty())
        {
            temporaryRegistry.deleteItem(item);
            registry.storeItem(item);
        }
        else
        {
            // Display error messages
        }
    }

模型:

@Entity
public class Item implements Cloneable
{
    @Id @GeneratedValue
    private long identifier;

    @NotNull(groups={Warning.class})
    @Length(min=1, max=80, groups={Warning.class})
    private String title;

    @NotNull(groups={Warning.class})
    @Length(min=1, max=80, groups={Warning.class})  
    private String artist;

    @NotNull(groups={Warning.class})
    @Length(min=1, max=10, groups={Warning.class})
    private String media;

    @NotNull(groups={Warning.class})
    @Length(min=1, max=5, groups={Warning.class})
    @Column(name = "_condition")
    private String condition;

// Setters and Getters

    public boolean isValidTitle()
    {
        final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        final Validator validator = factory.getValidator();

        final Set<ConstraintViolation<Item>> violations = validator.validateProperty(this, "title", Warning.class);

        return violations.isEmpty();        
    }

    public boolean isValidCondition()
    {
        final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        final Validator validator = factory.getValidator();

        final Set<ConstraintViolation<Item>> violations = validator.validateProperty(this, "condition", Warning.class);

        return violations.isEmpty();        
    }

    public boolean isValidArtist()
    {
        final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        final Validator validator = factory.getValidator();

        final Set<ConstraintViolation<Item>> violations = validator.validateProperty(this, "artist", Warning.class);

        return violations.isEmpty();
    }

    @Override
    public boolean equals(final Object object)
    {   
        return (object instanceof Item) && (object != null) && (((Item) object).getIdentifier() == identifier);
    }

    @Override
    public int hashCode()
    {
        return Long.valueOf(identifier).hashCode();
    }

    public Set<ConstraintViolation<Item>> validate()
    {
        final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        final Validator validator = factory.getValidator();

        return validator.validate(this, Warning.class);
    }
}

有人能解释一下吗,有没有人有办法只通过ajax提交表单和表单并显示结果?

共有1个答案

司徒宏远
2023-03-14

您的超文本标记语言最终会有一个

你需要把

 类似资料:
  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方

  • 问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么

  • 问题内容: 我正在为一个问题而苦苦挣扎,我不明白为什么它不起作用。如何通过将变量传递并转换为? 为什么在顶部代码段中不起作用,但在行下方的底部代码段中起作用? 唯一的区别似乎是添加了一个额外的变量,该变量也被键入为? 问题答案: 该是一种原始类型,同时是一个普通的Java类。您不能在原始类型上调用方法。但是该方法在上可用,如javadoc中所示 有关这些原始类型的更多信息,请参见此处

  • 问题内容: 为什么的到哪里去了? 问题答案: 删除任何字符,并从字符串的开头和结尾。

  • 问题内容: 我认为这是一个正常程序,但这是我得到的输出: 有人可以向我解释一下吗? 问题答案: 这是有据可查的PHP行为,请参阅php.net的foreach页面上的警告。 警告 即使在 foreach 循环之后,仍保留 $ value的 引用和最后一个数组元素。建议通过unset()销毁它。 __ 编辑 尝试逐步了解此处实际发生的情况

  • 问题内容: 我有上面的代码,但我不知道为什么会产生 而不是 非常感谢 问题答案: 使用量词来匹配1个或多个空格,而不是:- 表示匹配0个或多个空格,并且将在每个字符之前匹配一个空字符,并由一个空格代替。