私がしていることは、フィールドに値を渡さずに送信して、必要なフィールドのエラーメッセージを表示してから、フィールドに値を渡して再度送信することです。Tomcatで動作し、リクエストのGlassfishは送信されません。誰かが何が起こっているのか知っていますか?
私は本当に何が起こっているのか分かりません、誰か知っていますか?Tomcat7とGlassfish3、Primefaces 3.4.2 e PrimefacesExtensions0.6.2を使用しています。.earエンタープライズプロジェクトで。
:===============:理解を深めるための補足。:===============:
こんにちは皆さん、この問題を解決するのは難しいです。他の場所を検索した後、プロジェクトの依存関係で問題になる可能性があることがわかりました(どこにあるかわかりません)。そこで、primefacesサイトを例にとり、3つの視点で再現することにしました。
- Tomcatで実行(動作)
- Glassfishで実行(作業済み)
- 私のプロジェクトでGlassfishを使用して実行しています(機能していません)
1と2では、次のように、 primefacesサイトの例のctrl + C / ctrl+Vを実行しました。
index.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、layout primefaces拡張機能などのセキュリティフィルターを使用しています...shiroを確認しましたが、フィルターが何かを妨げていません。他の依存関係も確認されています。私が見つけたのは、ejbモジュールでprimefacesを宣言し(primefacesのSortOrderモデルクラスを使用しているため)、Webモジュールもprimefacesとprimefaces拡張機能を宣言していることです。
プロジェクトの依存関係は問題と関係がありましたか?ejbモジュールでprimefacesの依存関係を削除し、Webモジュールでのみprimefacesを宣言する方が適切でしょうか。(ここで試しましたが、Webモジュールはejbモジュールを認識できますが、その逆は発生しません。どうすればよいですか?)
みんなありがとう、英語でごめんなさい、私はブラジル人です。