2016-04-18 5 views
1

Ich weiß von einer vorherigen Frage (page values are not loaded) Ich kann einen Link nicht verwenden, um ein Formular zu senden. Ich muss entweder eine Schaltfläche wie einen Link aussehen lassen oder JavaScript verwenden. Ich habe den folgenden Link innerhalb eines Iterators.Speichern von Seitenfeldwerten mit Struts2 unter Verwendung von JavaScript mit einem Link

<s:iterator value="chosenShipperViewList"> 
     <div class="col-sm-3 col-xs-12 text-left"> 
      <s:url var="deleteLink"><s:param name="shipperName" value="%{organizationInfo.orgName}"></s:param></s:url> 
      <s:a id="deleteShipper" onclick="deleteShipperFromChosenShipperViewList();" href="%{deleteLink}" > 
       <img src="/llr/theme/delete.gif" width="16" height="16" alt="Map Red X" > 
      </s:a> 
     </div> 
     <hr> 
</s:iterator> 

die JavaScript-Funktion ist

function deleteShipperFromChosenShipperViewList(){ 
if(confirmDelete()){ 
     var oldAction = document.getElementById("shipment").action; 
     var url = oldAction.replace("shipment","shipment"+"_deleteShipperFromChosenShipperViewList"); 
     document.forms[0].action = url; 
     document.forms[0].submit(); 
} 

};

Der einzige Feldwert, der es auf der Java-Aktionsseite macht, ist die shipperName, die als Parameter übergeben wird, so dass ich offensichtlich die JavaScript-Funktion nicht korrekt mit dem Link verwende. Jede Hilfe wäre willkommen.

+0

Zeigen Sie Ihr Formular. –

+0

@AleksandrM Soll ich alle Jsp-Code für das Formular anzeigen? Es macht mir nichts aus, aber es sind 400 Zeilen Code. – ponder275

+0

Ein einzelnes Formular ist 400 Zeilen Code? Da stimmt etwas nicht. Vielleicht solltest du es in eine Art Zauberer aufteilen.Wie auch immer, du sagst, dass einer arbeitet und der andere nicht? Was ist der Unterschied zwischen ihnen? –

Antwort

0

Für zukünftige googler der das ist, was ich tat, um mein Problem zu lösen. Ich benutzte den Link, so dass ich auf die orgid des Versenders zugreifen konnte, den der Benutzer löschen wollte, aber ich konnte keine Möglichkeit finden, alle Seitenfeldwerte zu speichern, die der Benutzer eingegeben hatte, bevor er einen Versender löschte. Also nahm ich den Rat, den Aleksandr M. bei einer früheren Frage here gab, und änderte den Link zu einem Submit, den ich als Bild (ein rotes X) anzeigte.

<s:iterator value="chosenShipperViewList" status="status"> 
     <div class="col-sm-2 col-xs-12 "><label class="pull-right"><s:text name="name"></s:text>:</label></div> 
     <div class="col-sm-9 col-xs-12 text-left"><s:property value="organizationInfo.orgName"/></div> 
     <div class="col-sm-1 col-xs-12 text-left"> 
      <s:submit action="shipment_deleteShipperFromChosenShipperViewList" type="image" 
         src="/llr/theme/delete.gif" 
         onclick="clearDirtyFlag();deleteShipperFromChosenShipperViewList('%{organizationInfo.orgId}');" /> 
     </div> 
     <hr> 
</s:iterator> 

'%{organizationInfo.orgId}' zum deleteShipperFromChosenShipperViewList() Funktion Passing mir erlaubt dem Benutzer, die Funktion löschen wollte die orgId für den Spediteur übergeben. Unter Verwendung eines <s:submit> anstelle eines Links bedeutete Struts würde sich darum kümmern, alle Werte zu speichern, die der Benutzer eingegeben hatte. den Wert auf die Java-Aktionsseite deleteShipperFromChosenShipperViewList() es in einem versteckten Feld gespeichert wie folgt zu erhalten:

function deleteShipperFromChosenShipperViewList(orgIdOfShipperToRemove){ 
    if(confirmDelete()){ 
    document.getElementById('shipment_deleteOrgId').value = orgIdOfShipperToRemove; 
}}; 

wo das verborgene Feld:

<s:hidden name="deleteOrgId"></s:hidden> 

und ist im Innern der <s:form action="shipment"> Form, weshalb die id von der versteckten Form ist shipment_deleteOrgId.

0

Sie können einen zweiten Weg wählen, den Sie ausprobiert haben.

Der Code verwendet url Tag, um eine Verknüpfung für die Löschaktion zu erstellen, die Parameter benötigt.

<s:url var="deleteLink"><s:param name="shipperName" value="%{organizationInfo.orgName}"/></s:url> 

Sie sollten diese URL in dem JavaScript-Code verwenden, um das action-Attribut zu ändern, bevor submit() aufgerufen wird.

Sie können diese URL als Parameter an die Funktion übergeben.

<s:a id="deleteShipper" onclick="deleteShipperFromChosenShipperViewList('%{#deleteLink}');" href="#" > 
    <img src="/llr/theme/delete.gif" width="16" height="16" alt="Map Red X" > 
</s:a> 

Jetzt sollten Sie einen Parameter mit deleteShipperFromChosenShipperViewList() Funktion

function deleteShipperFromChosenShipperViewList(url){ 
    if (confirmDelete()) {   
    document.forms[0].action = url; 
    document.forms[0].submit(); 
    } 
} 

+0

Ich glaube nicht, dass dies mein Problem löst. Ich habe meine Frage bearbeitet, um zu verdeutlichen, was mein Problem ist. – ponder275

Verwandte Themen