JSF Parameter auslesen

Status
Nicht offen für weitere Antworten.
S

~Steve~

Gast
Ich habe folgendes Fragment:

Code:
<t:panelGrid>  
                             
               <h:outputLink  value="#" onclick="viewDialog.show();">                    
                     <h:outputText value="#{message.assign}"/>  
                      <f:param id="dataId" value="#{bean.objId}" name="dataId"/>                               
               </h:outputLink>
             
</t:panelGrid>


Beim Aufruf des Links öffnet sich der Dialog und es steht im URL:

http://localhost:8080/MyProject/faces/main_view.jsp#?dataId=443951


Code zum Schließen des Dialogs:


Wird der javascript Dialog geschlossen wird eine Action in der Bean aufgerufen

Code:
<t:commandButton id="ok" forceId="true" value="Speichern" actionListener="#{Actions.test}" onclick=" window.parent._myfaces_currentModal._myfaces_ok=true;window.parent._myfaces_currentModal.hide();"  />


Auszug aus Actions.java

Code:
public void test(ActionEvent e) {
    
    System.out.println("action aufgerufen");
    UIParameter component = (UIParameter) e.getComponent().findComponent("dataId");

    try {
      System.out.println("ausgegeben: "+component.getValue().toString());

    }
    catch (NullPointerException ex) {
      System.out.println("Fehler: "+ex.getLocalizedMessage());
    }

  }


Ausgabe:

Fehler: null


Wie komme ich hier in der action richtig an die dataId heran ? :-/


Danke im voraus!

Gruß
 
M

maki

Gast
Code:
public void myActionListener(ActionEvent event) {

      List children = event.getComponent().getChildren();
      Object value = ((UIParameter) children.get(0)).getValue();
...

Woran liegt es, dass Leute immer wieder versuchen einem Parameter eine ID zu geben (selbst wenn sie ansonsten keine IDs vergeben) und über diese dann versuchen den Wert rauszufinden???

Ids sind für deine Komponenten ;)
 
S

~Steve~

Gast
Danke, ich hab mich schon so gefreut, aber:


Code:
List children = event.getComponent().getChildren();
Object value = ((UIParameter) children.get(0)).getValue();

ArrayIndexOutofBoundsException, children.size() = 0



:bahnhof:


Allerdings verwende ich eine Id für <f:param auch an anderer Stelle und da klappt es



Code:
<t:commandLink id="meetinglink" action="createMeeting" actionListener="#{MeetingBean.setmeeting}" value="Anzeigen" >
        <f:param id="meeting" name="meeting" value="#{meeting.objId}" />
 </t:commandLink>




Code:
public void setMeeting (ActionEvent event) {
    UIParameter component = (UIParameter) event.getComponent().findComponent("meeting");
    Long meetingObjid = new Long(component.getValue().toString());
    //....
  }
 
M

maki

Gast
Steve, der parameter muss schon in dem Request zum Server mitgeschickt werden ;)
 
S

~Steve~

Gast
Mist. keine alternative Möglichkeit ?

auf clientseite per javascript irgendwie speichern , weiß aber nicht wie :-(
 
M

maki

Gast
Dein Paramter müsste hier mitgeschickt werden:
Wird der javascript Dialog geschlossen wird eine Action in der Bean aufgerufen

Code:
<t:commandButton id="ok" forceId="true" value="Speichern" actionListener="#{Actions.test}" onclick=" window.parent._myfaces_currentModal._myfaces_ok=true;window.parent._myfaces_currentModal.hide();"  />
 
S

~Steve~

Gast
und genau hier liegt das mir unverständliche Problem. Dieser Dialog ist Bestandteil von myfaces Sandbox

wenn man sich hier die jsp source anguckt, stellt man fest, dass bei diesen beispielen ausschließlich der dialog innerhalb eines <h:eek:utputlinks> angezeigt wird.

http://www.irian.at/myfaces-sandbox/dojo/dojoDialog.jsf

Verwende ich nun genau dieses Konstrukt, nämlich einen commandLink oder commandButton

Code:
<t:commandButton id="ok" forceId="true" value="Speichern" actionListener="#{Actions.test}" onclick=" window.parent._myfaces_currentModal._myfaces_ok=true;window.parent._myfaces_currentModal.hide();"  />


wird die action zwar ausgelöst und ich hab endlich den parameter und den wert da wo ich ihn haben will, schließt sich dieser dialog allerdings sofort wieder. er poppt kurz auf und nach Beendigung des requests isser wieder weg :-(



Hm ich steh kurz davor diesen ganzen Ajax Rotz rauszuwerfen. Weg damit.
 
M

maki

Gast
wird die action zwar ausgelöst und ich hab endlich den parameter und den wert da wo ich ihn haben will, schließt sich dieser dialog allerdings sofort wieder. er poppt kurz auf und nach Beendigung des requests isser wieder weg :-(
Parameter haben nunmal nur den Request scope ;)

Versuche doch mal, ein inputhidden feld mit dem Wert von param zu füllen ;)
 
S

~Steve~

Gast
OK;

also ich denke dass problem welches ich nun habe, ist diesen parameter aus

main_view.jsp

Code:
<t:panelGrid> 
                             
               <h:outputLink  value="#" onclick="viewDialog.show();">                   
                     <h:outputText value="#{message.assign}"/> 
                      <f:param id="dataId" value="#{bean.objId}" name="dataId"/>                               
               </h:outputLink>
             
</t:panelGrid> 


<s:modalDialog            
       		dialogId="viewDialog"
       		dialogVar="viewDialog"
       		styleClass="viewDialog"
       		dialogTitle="Einen Datensatz auswählen"  
       		     	           		      		      		       		     		       		
       		viewId="/faces/dialog.jsp">      		  
       		 
        </s:modalDialog>



irgendwie in die jsp Seite, welche in dem Dialog angezeigt wird "rüberzuretten" und dann, mit dem Schließen des Dialogs den param aus main_view.jsp zu übermitteln. Aber wie geht das genau ? Hilfe.

dialog.jsp

Code:
<t:commandButton id="cancel" forceId="true" value="Abbrechen" onclick="window.parent._myfaces_currentModal.hide();" />
                 <t:commandButton id="ok" forceId="true" value="Speichern" actionListener="#{Actions.test}" onclick=" window.parent._myfaces_currentModal._myfaces_ok=true;window.parent._myfaces_currentModal.hide();">


                    //nein so gehts nicht
                    <f:param id="dataId" name="dataId" value="#{bean.objId}"/>

                   //als Bsp würde das zumindest funktionieren
                    <f:param id="sedcard" name="sedcard" value="fritz"/>


                 </t:commandButton>
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben