Validation 表单内部<;p:Dialog>;不为实体设置值
我在Weblogic 10.3.0中有一个Java Web应用程序(WAR):Validation 表单内部<;p:Dialog>;不为实体设置值,validation,jsf,primefaces,Validation,Jsf,Primefaces,我在Weblogic 10.3.0中有一个Java Web应用程序(WAR): JSF2.0 Primefaces 3.5 jboss-el-2.0.0.GA.jar(如果我使用el-api-2.2.jar和el-impl-2.2.jar是一样的) validation-api-1.1.0.Final.jar 日食(JPA2.1) hibernate-validator-4.2.0.Final.jar JSTL 1.1 Java EE 5 我在中有一个来编辑/创建实体,并将它们保存到数据库中
- JSF2.0
- Primefaces 3.5
- jboss-el-2.0.0.GA.jar(如果我使用el-api-2.2.jar和el-impl-2.2.jar是一样的)
- validation-api-1.1.0.Final.jar
- 日食(JPA2.1)
- hibernate-validator-4.2.0.Final.jar
- JSTL 1.1
- Java EE 5
中有一个
来编辑/创建实体,并将它们保存到数据库中
我的问题是,当值直接设置为实体的属性时,
不会调用actionListener
。例如,以下是我的代码:
<h:form>
<p:outputLabel value="Name:" for="name" />
<p:inputText id="name" value="#{Servidores.selectedEntity.name}" title="Name" />
<p:outputLabel value="IP:" for="ip" />
<p:inputText id="ip" value="#{Servidores.selectedEntity.ip}" title="IP" />
<p:commandButton value="Submit" oncomplete="appEditingDialog.hide();" actionListener="#{Servers.processEntityAndRefresh()}"/>
</h:form>
但是,如果我将值设置为在bean中声明的简单字符串变量,而不是在实体中声明的字符串变量,它就会工作。像这样:
<p:inputText id="name" value="#{Servidores.stringInMyBean}" title="Name" />
我认为这是一个验证问题,但如果我把这个表单放在对话框之外,它就会工作
这里的问题和解决方案是什么?我见过有人将属性直接放在@ManagedBean
中,但是,哇,我不能混合使用模型和控制器
谢谢。这就是我解决这个问题和其他问题的方法: 在my Template.xhtml中,我确保声明如下:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
因为我没有使用“java.sun.com”,而是使用了“xmlns.com”(类似的东西,我不知道为什么)。我的EL问题解决了,但出现了一个新问题:所有东西都很大:字体、组件等等
我不得不用CSS来修复一切,但我不喜欢这样,这是无法接受的!另外,对话框显示在页面底部。因此,在尝试了一些东西之后,我修复了它,使模板客户端使用HTML
,而不仅仅是
。因此,我可以删除我对CSS文件所做的所有“强制更改”(我真的不知道为什么只使用
)
但是等等,在页面的某个部分,问题又出现了!从Datatable调用ManagedBean
中的方法/属性再次无法正常工作,这是因为名为“Disabled”的Primefaces
标记将其设置为true,以不允许用户移动面板。我的datatable位于仪表板内部的一个面板中,在将其设置为false之后,一切都正常工作(我猜这是一个primefaces bug)
然后,我从Primefaces 3.5迁移到4.0,并使用JSTL 1.2而不是1.1
但是是的,主要问题是因为声明xmlns、xmlns:h、xmlns:f等时链接错误。确定服务器日志中没有NPE吗?你真的看过服务器日志了吗?我没有看到消息组件,可能是出了什么问题,而你没有看到?您可以添加
或
来检查。@BalusC我发布了解决此问题和所有问题的方法!无论如何,谢谢你。