我发现了许多讨论如何注入财产的主题,但没有一个提出验证方法。 这是我的豆子:
@ManagedBean
@RequestScoped
public class MyBean {
@ManagedProperty(value = "#{param.key}")
private String keyFromUser;
}
目前,如果GET params中缺少param.key,我有
com.sun.faces.mgbean.ManagedBeanCreationException: An error occurred performing resource injection on managed bean myBean
答案 0 :(得分: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">
。
答案 1 :(得分:1)
我使用的JSF-beans很少,所以我必须说我不理解你的功能需求。也许注释一个方法@PostConstruct并在那里进行验证?那就是我把依赖注入解决后需要做的事情放到了
作为一个不直接回答问题的旁注,我认为CDI对于这样的场景非常强大。
看起来像:
@Inject
@RequestParam (validator = MyValidator.class)
如果您感兴趣我可以提供实际的完整实施