我所做的是在字段中不传递值并发送以给出所需字段的错误消息,然后我在字段中传递值并再次发送。在tomcat中工作,请求中的glassfish未发送。有谁知道可能会发生什么?
我真的不知道发生了什么,有人知道吗?我使用 Tomcat 7 和 Glassfish 3,Primefaces 3.4.2 e Primefaces Extensions 0.6.2。在 .ear 企业项目中。
:===============: 补充增强理解。:===============:
大家好,这个问题很难解决,然后在其他地方搜索后我看到(不确定在哪里)这可能是我的项目依赖项中的问题。所以我决定以primefaces网站为例,从三个角度进行复现。
- 使用 Tomcat 运行(已工作)
- 与 Glassfish 一起跑步(工作)
- 在我的项目中使用 Glassfish 运行(未工作)
在1和2上,刚刚做了一个ctrl + C / ctrl + V的primefaces网站例子,这样:
索引.xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="pt-br"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<f:view>
<h:head/>
<h:body>
<h:form id="form">
<p:panel id="panel" header="New Person">
<p:messages id="msgs"/>
<h:panelGrid columns="3">
<h:outputLabel for="firstname" value="Firstname: *" />
<p:inputText id="firstname" value="#{testMB.name}" required="true" label="Firstname">
<f:validateLength minimum="2" />
</p:inputText>
<p:message for="firstname" display="icon"/>
<h:outputLabel for="surname" value="Surname: *" />
<p:inputText id="surname" value="#{testMB.name}" label="Surname" required="true">
<f:validateLength minimum="2" />
<p:ajax update="msgSurname" event="keyup" />
</p:inputText>
<p:message for="surname" id="msgSurname" display="icon"/>
</h:panelGrid>
<p:commandButton id="btn" value="Save" update="panel" actionListener="#{testMB.save(actionEvent)}"/>
</p:panel>
</h:form>
</h:body>
</f:view>
</html>
TestManagedBean.java:
@ManagedBean(name="testMB")
@RequestScoped
public class TestManagedBean
{
private String name;
private String surname;
public String getName()
{
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public void save(ActionEvent actionEvent) {
addMessage(FacesMessage.SEVERITY_INFO, "TEST: " + this.name);
}
public void addMessage(FacesMessage.Severity s, String summary) {
FacesMessage message = new FacesMessage(s, summary, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
在 3 岁时,我也这样做了,但是要使用计划的架构,正在使用 shiro、facelets、布局 primefaces 扩展等的安全过滤器......我检查了 shiro 并且没有过滤器阻止某些事情,其他依赖项也看起来和我发现在 ejb 模块中我声明了 primefaces(因为我使用的是 primefaces 的 SortOrder 模型类),而 web 模块也声明了 primefaces 和 primefaces 扩展。
项目依赖性与问题有关吗?去掉ejb模块中primefaces的依赖,只在web模块中声明primefaces会更合适吗?(我在这里试过,但是web模块可以看到ejb模块但是相反的没有发生,我该怎么做?)
谢谢大家,对不起我的英语,我是巴西人。