2017-09-04 2 views
0

Je travaille sur une application JSF (2.2). Je vois un comportement bizarre en utilisant h: form et h: commandbutton.Problème avec h: form - Retour 404 lors de l'envoi via h: bouton de commande

Problème - Je code suivant dans searchRecord.xhtml dire -

<h:form> 
    <!-- Input fields --> 
    <h:commandbutton type="submit" value="Search" title="Search" action="#{bean.search}"/> 
</h:form> 

La question que je suis confronté est lorsque je clique sur le bouton d'envoi, il montre 404 page non trouvée avec l'URL pointant vers en cours page. Il n'exécute pas l'action de bean spécifiée.

J'ai essayé de déboguer ceci. Lorsque le formulaire est traduit en HTML, le formulaire est généré avec method = "post" action = "/ MyApplication/WEB-INF/searchRecord.xhtml" (qui semble être le comportement correct). Pourtant, en cliquant sur le bouton, je reçois 404.

Quelqu'un peut-il s'il vous plaît aidez-moi à comprendre quel est le problème? J'ai perdu mon week-end à comprendre cela, mais en vain.

EDIT - IDE - Eclipse JSF Version - Mojarra 2.2.8 Structure répertoire de mon projet est -

Projet

- Java Resource 
----src -> contains java files 
- WebContent 
---- META-INF 
---- WEB-INF 
------facelets -> contains *.xhtml files 
------resources -> contains img, css and JS files in respective folders 
------commonLayout.xhtml 
- index.xhtml 

accéder à mon application à l'aide d'un servlet launchHandler qui valide les paramètres de requête et transmettez à searchRecord.xhtml.

Je suis capable de voir searchRecord.xhtml. mais maintenant quand je clique, je reçois 404.

En tant que norme, nous devons utiliser servlet, puis en avant en conséquence.

+0

qu'est-ce qui est écrit dans votre méthode bean.search? La règle de navigation définie dans faces-config.xml est-elle correcte? – AswathyPrasad

+0

'type =" submit "' est superflu ... (il pourrait même causer des problèmes parfois si je me souviens bien) – Kukeltje

+0

* "qui semble être le bon comportement" * Non, ce n'est pas le cas. Essayez d'entrer cette URL dans la barre d'adresse du navigateur. Essayez d'accéder à n'importe quel fichier/WEB-INF de cette façon. Y compris web.xml. Vous verrez que c'est impossible. Non sans raison. – BalusC

Répondre

1

J'ai trouvé une solution à mon problème. Le problème ici était la mauvaise structure de répertoires (D'une certaine manière, j'ai manqué le point que les ressources sous/WEB-INF ne sont pas accessibles par URL.) Merci à @BalusC de l'avoir signalé !!!). Sur la base des réponses sur le post ci-dessous -

JSF files inside WEB-INF directory, how do I access them?

Which XHTML files do I need to put in /WEB-INF and which not?

je restructure mes projets comme suit: -

My Application 
|- Java Resource 
|----src -> contains java files 
|- WebContent 
|---- META-INF 
|---- Resources -> contains img, css and JS files in respective folders 
|---- JSF 
|  |--Contains client .xhtml files 
|---- WEB-INF 
|  |--template -> contains the master templates for my application 
|  |--web.xml 
|---- index.xhtml 

Maintenant, la navigation se passe comme prévu et toutes les pages sont affichées.

Je prévois également d'utiliser le paramètre de configuration JSF 2.2 et de mettre des ressources sous WEB-INF.