Validation 表单内部<;p:Dialog>;不为实体设置值

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 我在中有一个来编辑/创建实体,并将它们保存到数据库中

我在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
我在
中有一个
来编辑/创建实体,并将它们保存到数据库中

我的问题是,当值直接设置为实体的属性时,
不会调用
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我发布了解决此问题和所有问题的方法!无论如何,谢谢你。