我怎么可以注入的依赖一样@EJB,@PersistenceContext,@Inject,@AutoWired,等的@FacesValidator?在我的具体情况下,我需要通过以下方式注入Spring托管bean @AutoWired:
@FacesValidator("emailExistValidator")
public class EmailExistValidator implements Validator {
@Autowired
private UserDao userDao;
// ...
}
Run Code Online (Sandbox Code Playgroud)
然而,它没有被注射,它仍然存在null,导致java.lang.NullPointerException.看来@EJB,@PersistenceContext并且@Inject也不起作用.
如何在验证器中注入服务依赖项以便我可以访问数据库?
我有一个包含2个必填输入字段的表单和一个显示对话框的命令按钮:
<p:commandButton id="showDialogButton" value="Enregistrer"
action="#{DEQbean.Ajouter()}" update="@form"
oncomplete="dialogaboutDEQ.show()" />
<p:dialog id="reamrquesDEQ" widgetVar="dialogaboutDEQ" header="Informations"
width="400" closable="false" resizable="false" showEffect="clip"
hideEffect="clip" modal="true" appendToBody="true">
<p:messages id="messages" showDetail="true" autoUpdate="true"/>
<p:commandButton value="OK" action="DEQlist" />
</p:dialog>
Run Code Online (Sandbox Code Playgroud)
我想仅在验证通过并执行action方法时才显示对话框.但是,当所需的输入字段为空并且因此未执行操作方法时,仍会显示该对话框.
如何在完成成功的表单提交后才显示对话框?
由于fileLimit不存在于primefaces 3.4中,我正在尝试围绕实现验证器,问题是从不调用方法validate.那是我的验证者:
@FacesValidator(value ="fileLimitValidator")
public class FileLimitValidator implements Validator {
@Override
public void validate(final FacesContext context, final UIComponent component,
final Object value) throws ValidatorException {
final String fileLimit = (String)component.getAttributes().get("fileLimit");
final String size = (String)component.getAttributes().get("size");
if (fileLimit!=null && size!=null) {
if (Integer.valueOf(size) >= Integer.valueOf(fileLimit)) {
FacesUtils.throwErrorExceptionFromComponent(component,"fichero_confidencialidad_error");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的脸上,我试过了:
<p:fileUpload id="#{id}FileUpload"
fileUploadListener="#{bean[metodoTratarFichero]}" mode="advanced"
multiple="true" allowTypes="#{allowTypes}" showButtons="false"
update="#{id}ListaDocs #{id}MsgError" auto="true"
label="#{fileuploadmsg.label_boton}"
invalidFileMessage="#{fileuploadmsg.tipo_incorrecto}" >
<f:validator validatorId="fileLimitValidator"/>
<f:attribute name="fileLimit" value="#{fileLimit}"/>
<f:attribute name="size" value="#{listaDocumentos.size}"/>
</p:fileUpload>
Run Code Online (Sandbox Code Playgroud)
和:
<p:fileUpload id="#{id}FileUpload"
fileUploadListener="#{bean[metodoTratarFichero]}" mode="advanced"
multiple="true" allowTypes="#{allowTypes}" …Run Code Online (Sandbox Code Playgroud) 我想在我的一些输入组件中执行验证,例如<h:inputText>使用一些Java bean方法.我应该使用<f:validator>或<f:validateBean>为此吗?我在哪里可以阅读更多相关信息?
假设我有一个h:form包含三个字段和两个提交按钮的。例如,提交按钮是Display Report和Generate Data。为简单起见,我宁愿只有一种而不是多种形式。当Display Report 时,需要三个字段中的值作为报告呈现的标准。所以我将它们标记为required="true"but 禁用了Generate Data的执行,它不需要这三个字段。
有没有办法让 JSF 表单字段有条件地要求而无需太多自定义编码,例如requiredIf=#{condition}?