0

我发现很多讨论如何注入属性的主题,但没有一个建议验证方法。这是我的豆:

@ManagedBean
@RequestScoped
public class MyBean {       
    @ManagedProperty(value = "#{param.key}")
    private String keyFromUser;
}

目前,如果我拥有的 GET 参数中缺少 param.key

com.sun.faces.mgbean.ManagedBeanCreationException: An error occurred performing resource injection on managed bean myBean
4

2 回答 2

2

改为使用<f:viewParam>。就像<h:inputText>,但是对于 GET 请求参数。因此,它允许通过validator属性甚至标签注册验证器。你甚至可以附加一个。<f:validator><f:validateXxx><h:message>

<f:metadata>
    <f:viewParam id="key" name="key" value="#{myBean.keyFromUser}" validator="myValidator" />
</f:metadata>
<h:message for="key" />

您只需将@PostConstruct作业移至<f:event type="preRenderView">.

也可以看看:

于 2012-10-07T19:04:53.093 回答
1

我很少使用 JSF-beans,所以我必须说我不了解您的功能要求。也许注释一个方法@PostConstruct 并在那里进行验证?那是我把依赖注入解决后需要做的事情

作为不直接回答问题的旁注,我认为 CDI 对于这样的场景非常强大。

看起来像:

@Inject
@RequestParam (validator = MyValidator.class)

如果您有兴趣,我可以提供实际的完整实施

于 2012-10-07T18:51:03.600 回答