簡體   English   中英

如何驗證不帶xml的@ManagedProperty注入的bean屬性?

[英]How to validate bean property injected with @ManagedProperty without xml?

我找到了很多討論如何注入屬性的主題,但是沒有一個主題提出了驗證方法。 這是我的豆子:

@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

使用<f:viewParam>代替。 就像<h:inputText> ,但是對於GET請求參數。 因此,它允許通過validator屬性甚至<f:validator><f:validateXxx>標簽注冊驗證validator 您甚至可以在其上附加<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">

也可以看看:

我幾乎沒有使用過JSF-beans,所以我必須說我不理解您的功能要求。 也許注釋方法@PostConstruct並在那里進行驗證? 那就是我把去摻雜注射后需要做的事情

作為一個不能直接回答問題的側面說明,我認為CDI在這種情況下非常強大。

看起來像:

@Inject
@RequestParam (validator = MyValidator.class)

如果您有興趣,我可以提供實際的完整實施

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM