簡體   English   中英

Struts2提交標簽

[英]Struts2 submit tags

struts2的新手,遇到了一個問題,需要澄清。 希望高手幫我一下

我正在使用標簽編寫初學者的struts程序,我在使用標簽前綴's'。我創建了JSP頁面,您可以在其中上傳文件,我有邏輯根據我顯示的輸入來檢查文件是否存在或是否為null因此。 當沒有文件上傳時,我將用戶放置在帶有錯誤MSG的retry.jsp頁面的用戶中:“您尚未選擇任何文件,請選擇一個文件並嘗試上傳”,並且我的按鈕帶有value =“返回上載頁面”以下是我在retry.jsp中使用的邏輯:

<s:form action="Goback" method="post">
<s:submit value="Go back to upload page"/>
</s:form>

因此,想知道是否有任何方法可以不使用表單而僅通過按鈕來調用“ Goback”操作。

您可以使用錨點( <s:a>或觸發javascript函數的按鈕來進行POST或GET,而無需使用<form>

順便說一句,在您的情況下,我會退后一步,重新思考一下邏輯:

您可以在Struts2驗證中放入您的要求(必須上傳文件),以便在沒有文件的情況下過帳表單時,它將從ValidationInterceptor返回INPUT結果,而不是到達Action(並在執行完之后返回SUCCESS方法),返回到同一頁(如果需要,則返回另一頁,但通常不需要),並通過自動填充的fieldError通知錯誤。

您可以使用XML,Annotations或validate()方法中的純Java來實現。
遵循示例(未指定結果時,使用SUCCESS):


在struts.xml

<action name="SourceAction" class="xxx.yyy.SourceAction">
    <result>source.jsp</result>
</action>

<action name="TargetAction" class="xxx.yyy.TargetAction">
    <result>target.jsp</result>
    <result name="input">source.jsp</result>
</action>

源動作

public class SourceAction extends ActionSupport 

    public String execute(){
        return SUCCESS;
    }

}

源JSP

<s:form action="targetAction" enctype="multipart/form-data" />
    <s:file name="file" />
    <s:fielderror fieldName="file" />
    <s:submit value="Start the upload" />
</s:form>

目標行動

public class TargetAction extends ActionSupport implements Validateable{

    private File file;
    private String fileContentType;
    private String fileFileName;
    /* Getters and setters */

    public String execute() {
        return SUCCESS;
    }

    public void validate() {
        if (file==null){
            addFieldError("file","File is mandatory !! Please Retry");
        }
    }    
    /* when fieldErrors are added, INPUT result will be returned */ 

}

目標JSP

File <s:property value="fileFileName"/> successfully loaded.

您需要使用默認的InterceptorStack或確保至少具有Params,Upload,Workflow,Parameters,Validate Interceptor。

暫無
暫無

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

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