簡體   English   中英

使用帶有鏈接的javascript,使用Struts2保存頁面字段值

[英]Saving page field values with Struts2 using javascript with a link

我從上一個問題中知道(頁面值未加載)我無法使用鏈接提交表單。 我要么讓按鈕看起來像鏈接或使用JavaScript。 我在迭代器中有以下鏈接。

    <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>

JavaScript函數是

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();
}

};

進入java操作頁面的唯一字段值是shipperName ,它作為參數傳遞,因此我顯然沒有正確使用JavaScript函數和鏈接。 任何幫助,將不勝感激。

您可以選擇第二種方式,您已嘗試過。

代碼使用url標記為刪除操作創建鏈接,該鏈接具有必需參數。

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

您應該在javascript代碼中使用此URL來在調用submit()之前修改action屬性。

您可以將此URL作為參數傳遞給該函數。

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

現在你應該使用帶有deleteShipperFromChosenShipperViewList()函數的參數

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

對於未來的googler來說,這就是我為解決問題所做的。 我正在使用鏈接,所以我可以訪問用戶想要刪除的托運人的orgid ,但我找不到保存用戶在刪除托運人之前輸入的所有頁面字段值的方法。 所以我把意見亞歷山大M.介紹了前一個問題在這里 ,改變了鏈接到一個提交我作為圖像顯示(紅色的X)。

<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}'傳遞給deleteShipperFromChosenShipperViewList()函數允許我將用戶想要刪除的發貨人的orgId傳遞給該函數。 使用<s:submit>而不是鏈接意味着Struts將負責保存用戶輸入的任何值。 要獲取Java操作頁面的值, deleteShipperFromChosenShipperViewList()將其存儲在隱藏字段中,如下所示:

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

隱藏字段的位置是:

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

並且在<s:form action="shipment">表單中,這就是為什么隱藏表單的id是shipment_deleteOrgId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM