Hallo Leute,
seit einigen Stunden überlege ich nun wie ich folgendes Problem lösen könnte:
Man hat die Möglichkeit etwas anzulegen und diesem Objekt einen Namen zu vergeben. Sollte dieser Name schon vorhanden sein, so soll ein Popup erscheinen mit einem Hinweis und die Frage ob der Benutzer das alte angelegte Objekt überschreiben will (Namen sind einzigartig).
Ich nutze JSF mit Ajax und Javascript für die aktuelle Lösung. Ist aber meiner Meinung nach sehr wirklich nur ein workaround:
Das heisst, sobald ein Text eingegeben wurde, wird dieser mit Ajax an die Backing Bean gesendet. Falls der name existiert, wird der erste Button gerendered, ansonsten der Zweite.
Mein Problem ist hier der Javascript-Event. Mit onblur wird der Request zwar sofort nach Verlassen abgeschickt, aber wenn der Benutzer direkt danach auf Save klickt, wird der Request erst abgeschickt nachdem der falsche Button angeklickt wurde. OnChange als Event zeigt keinerlei Verbesserungen.
Kennt jemand eventuell einen sauberen Weg um dieses Problem zu lösen?
Vielen Dank im Voraus
seit einigen Stunden überlege ich nun wie ich folgendes Problem lösen könnte:
Man hat die Möglichkeit etwas anzulegen und diesem Objekt einen Namen zu vergeben. Sollte dieser Name schon vorhanden sein, so soll ein Popup erscheinen mit einem Hinweis und die Frage ob der Benutzer das alte angelegte Objekt überschreiben will (Namen sind einzigartig).
Ich nutze JSF mit Ajax und Javascript für die aktuelle Lösung. Ist aber meiner Meinung nach sehr wirklich nur ein workaround:
Code:
...
<h:inputText id="save_name_in" value="#{manager.name}" size="20" maxlength="45" >
<a4j:support ajaxSingle="true" event="onblur" reRender="submit_type" action="#{manager.checkIfNameExists}" />
</h:inputText>
...
<h:commandButton id="save_button1"
onclick="if (!confirm('A object with this name already exists. Do you want to overwrite the existing object?')) return false;"
rendered="#{manager.alreadyExists}"
action="#{manager.saveObject}"
value="Save & Exit"
title="Save" />
<h:commandButton id="save_button2"
rendered="#{!(manager.alreadyExists)}"
action="#{manager.save}"
value="Save & Exit"
title="Save" />
...
Das heisst, sobald ein Text eingegeben wurde, wird dieser mit Ajax an die Backing Bean gesendet. Falls der name existiert, wird der erste Button gerendered, ansonsten der Zweite.
Mein Problem ist hier der Javascript-Event. Mit onblur wird der Request zwar sofort nach Verlassen abgeschickt, aber wenn der Benutzer direkt danach auf Save klickt, wird der Request erst abgeschickt nachdem der falsche Button angeklickt wurde. OnChange als Event zeigt keinerlei Verbesserungen.
Kennt jemand eventuell einen sauberen Weg um dieses Problem zu lösen?
Vielen Dank im Voraus