gpt4 book ai didi

java - 绑定(bind) value to a bean property while showing a different text into the field

转载 作者:行者123 更新时间:2023-11-30 09:42:21 25 4
gpt4 key购买 nike

我知道标题听起来很荒谬,但我不知道如何解释我的意思:)

我有一个用于编辑实体的表单。每个字段都链接到其相关的 bean 属性,并且工作正常。

我需要做的是在表单字段中显示实体的当前值,以使编辑速度更快(使用当前值而不是空字段非常有用!)

所以我得到了这个 edit.xhtml 页面,它从 get 参数中获取 ID 并使用支持 bean 中的 getFromId 方法检索实体。

假设这个实体存储在一个名为“contact”的 var 中,我想要这种形式:

<f:view>
<h:form>
<h1><h:outputText value="Edit"/></h1>
<h:panelGrid columns="2">
<h:outputLabel value="Name:" for="name" />
<h:inputText id="name" value="#{contactsMB.name}" title="Name" required="true"/>
<h:outputLabel value="Surname:" for="surname" />
<h:inputText id="surname" value="#{contactsMB.surname}" title="Cognome"/>
<h:outputLabel value="Email:" for="email" />
<h:inputText id="email" value="#{contactsMB.email}" title="Email" required="true"/>
<h:outputLabel value="Number:" for="number" />
<h:inputText id="number" value="#{contactsMB.number}" title="Number" />
<h:inputHidden id="id" value="#{contactsMB.id}"/>
<h:commandButton value="Edit" action="#{contactsMB.editContact}"/>
</h:panelGrid>
</h:form>
</f:view>

但我想在 texfields 中显示联系人变量的值。

因此,例如,第一个 inputText 必须显示“stefano”作为名称,但它必须链接到 contactsMB.name。

基本上它就像inputText的一个默认值,这个默认值必须来自一个实体。

这可能吗?

最佳答案

首先,你应该问自己:Do you really need to do that? .如果您正在编辑一个实体,您应该直接利用该实体的 getters 和 setters。它可能是这样的:

@ManagedBean
@ViewScoped
public void ContactsMB {

@EJB
private SomeEJB someEJB;
@ManagedProperty(value = "#{param.username}")
private String username;
private User user;

@PostConstruct
public void prepareEditing() {
this.user = someEJB.loadUserFromDatabase(username);
}

// Getters and Setters
}

例如,您可以这样显示用户名:

<h:outputLabel value="Name:" for="name" />
<h:inputText id="name" value="#{contactsMB.user.name}" />

以上<h:inputText>将显示用户的当前名称作为默认值。当您输入新名称并提交时,User实体将直接更新。

如果你真的想按照你解释的那样做,你可以改变@PostConstruct方法是这样的:

@ManagedBean
@ViewScoped
public void ContactsMB {

@EJB
private SomeEJB someEJB;
@ManagedProperty(value = "#{param.username}")
private String username;
private User user;

private String name;
private String email;

@PostConstruct
public void prepareEditing() {
this.user = someEJB.loadUserFromDatabase(username);
this.name = user.getName();
this.email = user.getEmail();
}

// Getters and Setters
}

关于java - 绑定(bind) <h :inputText> value to a bean property while showing a different text into the field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com