# action-attribut des jsf h:form-tag überschreiben



## ruutaiokwu (8. Feb 2011)

hallo zusammen,

habe das problem dass mit in einer jsf/primefaces-anwendung beim *h:form*-tag immer das attribut "action" automatisch generiert wird. und das kann ich auch nicht überschreiben mit <h:form action="blablabla">... das attribut "id" in der form <h:form id="myid"> geht hingegen problemlos... (?)

ich muss action überschreiben, weil mir das auf das .xhtml-facelet zeigt, welches NICHT der einstiegspunkt der anwendung ist, sondern sich im WEB-INF-verzeichnis befindet... und wenn das so an den browser geht, geht gar nicht. (WEB-INF ist von aussen her NICHT erreichbar...)

irgendwie muss doch das gehen, ist doch total trivial... 

andernfalls werde ich halt ein wrapper-tag für h:form schreiben, wo ein überschreiben des attributs "action" möglich ist...

was meinst ihr dazu?


danke & grüsse,
jan


----------



## ruutaiokwu (10. Feb 2011)

weiss wirklich niemand, wie das geht? aus das ein soooo ausserordentlicher fall?

konkret habe ich das problem, dass die inneren tags (innerhalb von h:form) auf das h:form-tag angewisen sind; d.h. dass ich das h:form-tag nicht einfach in ein "normales" html-form-tag umschreiben kann - dann läuft nämlich gar nix.

grüsse,
jan


----------



## sdsdsdsds (12. Feb 2011)

Also irgendwie scheinst du JSF nicht verstanden zu haben natürlich hängen die Komponenten vom <h:form> ab, <h:form> ist der übergeordnete Naming-Container)  und deine Frage ist anscheind völlig nutzlos weil ich glaube keiner so wirklich versteht was du vor hast... 

Aber ich glaube du meinst: Du hast eine index.jsp die der Einstiegpunkt der Anwendung sein soll dann:

index.jsp

```
<%
    response.sendRedirect("irgendwo/seite.jsf");
%>
```

oder

```
<html>
<head></head>
	<body>
		<jsp:forward page="irgendwo/seite.jsf" />
	</body>
</html>
```

Das nennt man einen non-faces-request...


----------



## ruutaiokwu (13. Feb 2011)

hallo sdsdsdsds, 

danke für deine antwort, werde das morgen in der firma testen.

mein konkretes problem ist folgendes:

ich verwende jfs nur für die präsentation, in kombination mit einem klassischen servlet. im servlet, welches der einstiegspunkt der anwendung ist, mache ich einen "request dispatch", eine art serverseitige weiterleitung. die weiterleitung erfolgt auf ein "facelet" (xhtml), welches sich bspw. unter WEB-INF/pres/jsf/site.xhtml befindet. also innerhalb des WEB-INF-verzeichnisses, und dort ist es nicht "öffentlich" (-> am browser) aufrufbar.

das jsf h:form-tag macht dann aber als action immer folgendes rein /WEB_APP_CONTEXT/WEB-INF/pres/jsf/site.xhtml

...und das ist wie gesagt nicht erreichbar, also wird nichts mit dem request darauf. und deshalb muss ich es überschreiben.


gruss, jan


----------



## ruutaiokwu (10. Mai 2011)

hat niemand eine idee?

mfg, jan


----------



## Luke_ (11. Mai 2011)

die action ist ja erstmal nur für den string der navigationrule verantwortlich... und über eine navigationrule sollte es eig funktionieren. ich könnte mir vorstellen, dass es aus dem servlet nicht funktioniert, weil das ein none-faces-request ist. sicher bin ich mir da allerdings nicht, theoretisch sollte es auch aus einem sevlet funktionieren.
so ganz versteh ich allerings nicht, dass der einstiegspunkt nen servlet ist und du von einer form sprichst. oder befindet sich das form-tag schon in der xhtml unterhalb von web-inf? ist leider alles nicht so ganz deutlich was du hier beschrieben hast.


----------



## ruutaiokwu (11. Mai 2011)

hallo luke,

danke für deine antwort. verwende jsf 2.0 facelets auf diese art, wie hier erklärt: http://www.java-forum.org/web-tier/110323-jsf-nur-fuer-praesentation-verwenden.html

ich ersetzte quasi das jsp durch jsf 2.0 facelets, setzte also nicht komplett auf jsf-mvc... darum ist auch der einstiegspunkt ein javax.servlet.http.HttpServlet...

das geht leider nicht immer sooooo gut, wie im jetztigen fall z.b...


gruss, jan


----------



## Luke_ (11. Mai 2011)

das setzt aber nicht vorraus, dass du ein servlet als einstiegspunkt vernwendest.. ich würd damit einfach mal ein wenig rumspielen, mit anderen einstiegspunkten, verschiedenen weiterleitungen usw.


----------

