Hallo, ich versuche mit JSF einzusteigen und suchte eine Möglichkeit, auf einer bereits angezeigten Web Seite einen Chech durchzuführen (Sowas wie beim registrieren, ist der Nick noch verfügbar). Ich denke, AJAX wäre das richtige Stichwort, bin mir aber nicht sicher, wie ich das verbinden kann. Beim experimentieren bin ich auf viele nicht- und eine funktionierende Kombination gekommen:
Kann man das so überhaupt machen? Ich wundere mich, dass ich ganz oben die /html und /core zweimal einbinden muss, aber anders habe ich es nicht hinbekommen. Wie ist es denn mit zwei forms auf einer Seite, ist das ok? Wenn ich die Elemente alle in eine form ziehe, wird die Ausgabe nicht mehr komplett durchgeführt?!?
Vielleicht habt ihr ein paar Tips für mich, ich bin noch am rudern das Gesamtkonzept zu durchblicken, obwohl ich schon recht viel gelesen hab...
Danke,
Stephan
Achja, es geht ja sogar noch weiter: Wie ich gerade feststelle, wird der Code in dem gameUser nicht immer ausgeführt. Wenn ich den Button "Welcome Me" drücke, wird zwar etwas aktualisiert, aber der "gameUser.counter" zeigt einen konstanten Wert. Implementiert ist die so, dass der Counter hochzählen sollte, wie kommt das?
HTML:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<f:loadBundle basename="messages" var="msg"/>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:i="http://java.sun.com/jsf/core"
xmlns:j="http://java.sun.com/jsf/html">
<head>
<title>Register new user</title>
</head>
<body>
<f:view>
...
<h:form id="registerNewUserForm" onkeypress="enterForm()">
(<h:outputText value="#{gameUser.counter}"/>)
...
<h:outputText value="Nickname:"/>
<h:inputText id="nickName" value="#{gameUser.nickName}" validator="#{gameUser.checkNickName}" required="true" immediate="true">
<f:validateLength minimum="3" maximum="30"/>
</h:inputText>
<h:message for="nickName" style="color:darkred"/>
<p></p>
<h:commandButton action="register" value="#{msg.button_text}">
</h:commandButton>
</h:form>
<h:form>
<h:inputText id="name" value="#{gameUser.nickName}"></h:inputText>
<h:commandButton value="Welcome Me">
<i:ajax execute="name" render="output" />
</h:commandButton>
<h2><h:outputText id="output" value="#{gameUser.counter}" /></h2>
</h:form>
</f:view>
</body>
</html>
Kann man das so überhaupt machen? Ich wundere mich, dass ich ganz oben die /html und /core zweimal einbinden muss, aber anders habe ich es nicht hinbekommen. Wie ist es denn mit zwei forms auf einer Seite, ist das ok? Wenn ich die Elemente alle in eine form ziehe, wird die Ausgabe nicht mehr komplett durchgeführt?!?
Vielleicht habt ihr ein paar Tips für mich, ich bin noch am rudern das Gesamtkonzept zu durchblicken, obwohl ich schon recht viel gelesen hab...
Danke,
Stephan
Achja, es geht ja sogar noch weiter: Wie ich gerade feststelle, wird der Code in dem gameUser nicht immer ausgeführt. Wenn ich den Button "Welcome Me" drücke, wird zwar etwas aktualisiert, aber der "gameUser.counter" zeigt einen konstanten Wert. Implementiert ist die so, dass der Counter hochzählen sollte, wie kommt das?
Code:
public int getCounter() { return counter++; }
Zuletzt bearbeitet: