JSF Bean属性未更新



我有一个bean,它有一个名为'name'的字段,还有一个JSF表单,它有一个与这个字段映射的inputText。字段的初始值很好地显示在表单上。

问题是当我提交表单时,值没有更新为inputText的内容。在下面的savePlayer()方法中,name的值始终是'name',而不是我在表单输入中键入的值。

豆子:

@Named
@RequestScoped
public class PlayerForm {
    @Inject
    private PlayerRepository playerRepository;
    private String name = "name";

    public String savePlayer(){
        Player player = new Player();
        player.setName(name);
        playerRepository.savePlayer(player);
        return "saveUserOk";
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}

格式:

   <h:form>
        <h:inputText value="#{playerForm.name}" />
        <h:commandButton value="Submit" action="#{playerForm.savePlayer}" />
    </h:form>

非常感谢您的帮助!

如果您从包javax.faces.bean (JSF)而不是从包javax.enterprise.context (CDI)导入@RequestScoped,则可能发生这种情况。然后,每个EL表达式#{}都将创建一个全新的、完全独立的bean实例。然后,给定的表单示例将在bean的两个实例中结束,一个用于设置名称,另一个用于调用操作。

javax.faces.bean.RequestScoped注释只能与JSF自己的@ManagedBean注释一起使用,不能与CDI的@Named注释一起使用。

相关内容

  • 没有找到相关文章

最新更新