Struts2 s action標籤不執行

2021-08-31 05:38:39 字數 1265 閱讀 1531

專案中用到struts2框架的s:action標籤,具體什麼意思,怎麼用,在這就不多說了,網上很多介召,這裡主要說一下用s:action標籤所遇到的乙個問題:

question-a:在主頁面裡包含s:action標籤,首次載入主頁面時,s:action可以正確執行(請求後台action),並返回執行結果,這時submit主頁面,並將執行結果再次返回到主頁面,這時發現s:action不執行(還是上次的執行結果

)。經分析,原因可能如下:

r-a:猜測可能是web伺服器,tomcat對頁面**進行了快取,所以沒有再次去請求被包含的s:action。於是在每次執行s:action時,新增乙個隨機數,如下:

經過測試問題解決。

網上還有一種s:action標籤不執行的情況,如下:

question-b:提交表單 -> 伺服器對表單資料進行驗證(使用struts2的validation框架) -> 驗證錯誤,返回input頁面。邏輯很簡單,問題出在當驗證失敗返回到input頁面時,這個頁面包含的標籤不執行。

標籤允許在jsp頁面中直接呼叫action,並可以將這個action執行後返回的資源載入到此頁面中。

我的這個input頁面包含兩部分,左邊是由返回的乙個列表頁面,右邊是表單頁面。經過研究發現,的確是由於表單驗證失敗造成的。

struts2在執行action方法前,都要先執行validate***()和 validate()方法來進行表單驗證,由於我這裡使用了表單驗證機制,所以如果在驗證時發現錯誤,則會將錯誤資訊放入filederror中,並跳過 action方法,直接返回到input指定的檢視中。

這樣,當返回input檢視後,檢視中再通過去請求另乙個 action時,會將之前filederror一起帶入到這個action中,這個action(即newslist)同樣也需要呼叫validate方法進行驗證,當發現了存在filederror後,就會立即返回到這個action指定的input檢視中,而並不執行這個action的邏輯方法。因此,也就出現了上面的action執行失敗的問題了。

r-b:既然是由於發現filederror造成的,那麼要解決這個問題,只需要寫乙個校驗newslist action的方法,並在這個方法中將filederror清除就可以了。這樣,當struts呼叫這個action的校驗方法時,將錯誤清除,這樣就可以繼續向下執行這個action了。於是,左邊的列表頁面又顯示出來了。

struts2 s action標籤的用法

使用action標籤,可以允許在jsp頁面中直接呼叫action,類似ajax頁面呼叫 在呼叫action時候,可以指定需要被呼叫的action的name和namespace.如果指定了executeresult引數的屬性值為true,該標籤會把action的處理結果 檢視資源 包含到本頁面中.使用...

Struts2 doubleselect標籤的使用

一 struts2提供了級聯下拉選擇框doubleselect標籤,這對簡化諸如省份 城市這樣的典型需求的操作是大有好處的.如 省份 城市 的級聯選單。1 省份類 封裝set and get package com.hlx.entity public class province 2 城市類 封裝s...

Struts標籤s action無限迴圈錯誤詳解

博主在寫乙個web專案的時候需要自動執行action請求,所有用到了這個標籤。但是卻出現無限提交action的情況。大概是這樣 細心一點可以看到程式都在執行重複的操作,博主首先檢查了資料庫,發現沒有問題,然後檢查了dao,biz等業務邏輯層,發現也沒問題,最後將問題轉向這個標籤上來,經檢查確實是這個...