当前位置: 首页 > 面试题库 >

添加时,提交的表单值未在模型中更新 至

公孙令秋
2023-03-14
问题内容

我正在学习如何在jsf中使用ajax,我制作了一个实际上不执行任何操作的页面,将输入数字填充为数字,然后提交给服务器,使用提交的值调用该元素的setter,并显示getter的值。

这是简单的bean的代码

@ManagedBean(name="helper",eager=true)
public class HealthPlanHelper {


    String random = "1";

    public void setRandomize(String s){
        random = s;
                System.out.println("Calling setter");
    }

    public String getRandomize(){
        return random;
    }

}

和jsf页面:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core">
<h:head></h:head>
<h:body>

    <h:form>
        <h:commandButton action="nothing">
            <f:ajax render="num"/>
        </h:commandButton>

        <h:inputText value="#{helper.randomize}" id="num"/>
    </h:form>

</h:body>
</html>

如您所见,这是一个请求范围的Bean,每当我单击按钮时,服务器就会显示它创建了该Bean的实例,但是从未调用setter方法,因此,getter始终将“
1”作为串。

当我删除设置员时,通常称为。


问题答案:

<f:ajax>唯一电流分量(处理由默认的读取描述execute属性)。基本上,您的代码与此完全相同:

<h:form>
    <h:commandButton action="nothing">
        <f:ajax execute="@this" render="num"/>
    </h:commandButton>
    <h:inputText value="#{helper.randomize}" id="num"/>
</h:form>

<h:commandButton action>实际上,仅处理,而<h:inputText value>(以及任何其他输入字段,如果有)被完全忽略。

您需要更改execute属性,以明确指定要在ajax请求期间处理的组件或部分。通常,为了处理整个表格,@form使用了:

<h:form>
    <h:commandButton action="nothing">
        <f:ajax execute="@form" render="num"/>
    </h:commandButton>
    <h:inputText value="#{helper.randomize}" id="num"/>
</h:form>

也可以看看:

  • 在JSF 2.0通信 - 的Ajax(异步)POST形式
  • 未调用commandButton / commandLink / ajax操作/侦听器方法或未更新输入值(点8)
  • 了解PrimeFaces流程/更新和JSF f:ajax执行/渲染属性


 类似资料:
  • 我正在尝试使用spring data JPA repository方法在数据库中插入4个表单字段name、age、location和address。当我将表单提交到操作时,控制器不会无法接收提交的值。在控制器操作中获取null。在这里,我尝试使用spring、spring boot和spring data JPA。下面是我的控制器, 我的形式是, 导入javax.persistence.*;

  • 我正在使用Adobe Acrobat DC Pro,我正在使用javascript控制台对多个字段的“默认值”进行更新。在控制台中运行时,下面一行会更新字段“FirstName”。如果我查看字段的属性,默认值已更新,但预览表单时不会显示。 这是为什么?

  • 问题内容: 我想要一个脚本,每当我单击“提交”按钮时,该脚本就会将表单中的文本回显到div标签。 我能够立即执行此操作,但是我希望即使我提交另一个文本,文本也仍会显示在div中。我希望每个新提交的文本都创建一个列表。将其添加到上一个列表。 可能与数据库有关,但我想知道,每次单击提交时,我只会得到当前提交的文本。 这样的脚本的例子 我只想在每次单击提交时将条目添加到列表中。 问题答案: 我很高兴你玩

  • 审议本届会议: 这是一个在数据库中显示用户图像的图像,带有会话变量!然而,在我的网站中,我正在使用上传图像表单更改用户图片,用户图片正在更新,但旧图片将保留,直到我刷新页面…我希望避免刷新页面以解决此问题。。。。 请注意,我的目标是一个iframe,而不是重定向到我的操作。。。 这是我的上传表格,你可能不需要,但我会把它放在这里... 例如: 使现代化php示例 所以为了简单起见,我想在提交表单时

  • 下面是MultistepForm的代码。我已经实现了一个多步骤表单功能,所以这里一切都很好,只是问题是在这个表单中,我在最后一步有一个预览页面,所以当我点击提交按钮时,表单正在消失,按钮正在顶部移动。所以如果有人能帮我请。

  • 我有一个数据模型是这样的: 当我在表中添加新行并更新表中现有行时。在提交表单时,我获得了控制器中现有行的更新值,但我没有获得新添加的行作为控制器中的新元素。获取对象中新添加的元素所需做的操作。