首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ViewParam vs @ManagedProperty(值= "#{param.id}")

ViewParam vs @ManagedProperty(值= "#{param.id}")
EN

Stack Overflow用户
提问于 2011-02-04 00:45:18
回答 1查看 55.8K关注 0票数 98

像这样定义视图参数有什么区别:

代码语言:javascript
复制
<f:metadata>
  <f:viewParam name="id" value="#{someBean.id}"/>
</f:metadata>

在ManagedBean中定义属性,如下所示:

代码语言:javascript
复制
@ManagedProperty(value = "#{param.id}")
private Integer id;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-04 01:06:29

  • 仅在更新模型值阶段设置该值(因为它扩展了UIInput).

  • 设置的值在@PostConstruct期间不可用,因此您需要在内部添加一个,以便根据设置的值执行初始化/预加载。从JSF2.2开始,您可以使用<f:viewAction>来代替。

  • 允许嵌套和,以实现更细粒度的转换/验证。甚至可以附加。

使用的includeViewParams属性或任何URL中的includeViewParams=true请求参数,可以将

  • 作为GET查询字符串包括在内。

  • 可用于@RequestScoped bean,但如果您希望视图参数能够经受住由视图中包含的表单导致的任何验证失败,则它要求bean为@ViewScoped,否则您需要在命令组件中手动保留所有请求参数,以供<f:param>进行后续请求。

示例

代码语言:javascript
复制
<f:metadata>
    <f:viewParam id="user_id" name="id" value="#{bean.user}"
        required="true" requiredMessage="Invalid page access. Please use a link from within the system."
        converter="userConverter" converterMessage="Unknown user ID."
    />
</f:metadata>
<h:message for="user_id" />

使用

代码语言:javascript
复制
private User user;

还有一台@FacesConverter("userConverter")。通过http://example.com/context/user.xhtml?id=123调用页面将通过转换器传递id参数,并将User对象设置为bean属性。

@ManagedProperty

紧跟在bean的construction.之后的

  • 设置该值

  • 设置值在@PostConstruct期间可用,这允许基于设置值轻松初始化/预加载其他属性。

  • 不允许在视图中进行声明性转换/验证。

对于范围大于请求范围的bean,不允许使用#{param}

  • 如果您依赖于后续POST请求中存在的#{param}托管属性,则需要将其作为<f:param>包含在UICommand组件中。

示例

代码语言:javascript
复制
@ManagedProperty("#{param.id}")
private Long id;

private User user;

@EJB
private UserService userService;

@PostConstruct
public void init() {
    user = userService.find(id);
}

但是,每当usernull时,您必须通过摆弄FacesContext#addMessage()或其他东西来管理验证。

@PostConstructincludeViewParams都是强制的时,您可以同时使用它们。你将不能再应用细粒度的转换/验证。

另请参阅:

票数 145
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4888942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档