我已经创建了一个地址bean,我想使用它两次-一次用于街道地址,一次用于邮寄地址。根据下面的说明,我可以使用faces config来实现这一点,但我想知道是否可以通过注释来实现这一点。
例如,将@ManagedBean(name="StreetAddress")和@ManagedBean(name="MailingAddress")放在同一个类中?我觉得我遗漏了一些明显的东西,但我不确定是什么。
<managed-bean>
<managed-bean-name>MailingAddress</managed-bean-name>
<managed-bean-class>com.leetb.jsf_ex1.model.AddressBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<map-entries/>
</managed-bean>
<managed-bean>
<managed-bean-name>StreetAddress</managed-bean-name>
<managed-bean-class>com.leetb.jsf_ex1.model.AddressBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<map-entries/>
</managed-bean>
public class AddressBean {
private String line_one;
private String line_two;
private String suburb;
private String state;
private String postcode;
/* getters and setters snipped */
}发布于 2012-06-03 00:37:45
你有一个设计上的错误。这些看起来更像模型类,而不是支持bean类。模型类根本不应该是托管bean。使它们成为支持bean类的属性,并对其进行管理。
例如。
@ManagedBean
@ViewScoped
public class AddressBacking {
private AddressBean mailingAddress;
private AddressBean streetAddress;
@PostConstruct
public void init() {
// Prepare them here yourself. For example, when it's for a new entry.
mailingAddress = new AddressBean();
streetAddress = new AddressBean();
}
public void save() {
// ...
}
// ...
}(顺便说一下,我将AddressBean重命名为Address )
并按如下方式使用它
<h:inputText value="#{addressBacking.mailingAddress.line_one}" />
...
<h:inputText value="#{addressBacking.streetAddress.line_one}" />
...https://stackoverflow.com/questions/10863060
复制相似问题