我在Weblogic 10.3.0中有一个Java Web应用程序(WAR):
我在<h:form/>
内有一个<p:dialog/>
来编辑/创建实体,并将它们保存到数据库中。
我的问题是,当值直接设置为实体的属性时,<p:commandButton/>
不会调用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中声明的简单String变量而不是在它工作的实体中。像这样:
<p:inputText id="name" value="#{Servidores.stringInMyBean}" title="Name" />
我认为这是一个验证问题,但如果我把这个表格放在Dialog之外就行了。
这可能是什么问题和解决方案?我见过人们把属性直接放在@ManagedBean
但是,哇,我不能混合模型和控制器。
感谢。
答案 0 :(得分:0)
这就是我如何解决这个以及我遇到的其他问题:
在我的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
而不仅仅是<ui:composition/>
制作模板客户端。所以我可以删除我对CSS文件所做的所有“强制更改”(我真的不知道为什么只有<ui:composition/>
的行为。)
但是等等! ,在页面的一部分,问题又回来了!从Datatable中调用ManagedBean
中的方法/属性再次无法正常工作,这是因为Primefaces <p:Dashboard/>
标记名为“Disabled”,我将其设置为true以不让用户移动面板。我的数据表位于一个面板中,该面板位于仪表板内部,在将其设置为false后,一切正常工作(我猜这是一个主要的错误)。
然后,我只是从Primefaces 3.5移动到4.0并使用JSTL 1.2而不是1.1
但是,是的,主要的问题是因为声明xmlns,xmlns:h,xmlns:f等时的错误链接。