我正在使用.JSP页面和Struts2框架构建一个Web应用程序。我想创建一个自定义拦截器,它的行为就像ASP.NET中的视图状态一样。使用Struts2拦截器模拟ASP.NET的Viewstate
当一个动作被调用时,这个拦截器应该获取用户输入到用户来自的.jsp页面的任何输入字段的所有数据。拦截器会将这些数据放入会话中。接下来要显示的页面(操作的结果,如果是回发,可能与之前的页面相同)将能够从会话中再次获取该数据,并在必要时再次填写输入字段。
我的问题在于任何输入字段是否在当前页面上出现检测,如果有的话,要得到他们的文字。如果我的拦截器可以以某种方式读取页面的DOM,并遍历所有输入元素,那将很方便。不幸的是,我无法找到任何方法在动作/回发发生之前给拦截器访问.JSP页面的内容。这可以做到吗?
我知道这些值在使用表单和提交按钮时会自动放在valuestack上,但在这种情况下,我并不总是按提交,我也可能会随机按其他按钮。例如,我的页面可能是一个表单,但也有3个语言按钮可让用户在各种语言之间切换。按下其中一个按钮实际上不会提交表单,因此来自输入的数据不会放在值堆栈上。即使它是,每个表单可能有不同的输入字段,所以我不能访问带有输入字段名称的值堆栈,因为我的viewtsate拦截器事先不知道哪些输入存在。
现在我epxloring另外一个可能性是以下设置:
*Whenever a user enters anything in an input field, use javascript
to put that value into the httpsession.
*Whenever a user goes to page, use javascript to populate all input fields
if there is a corresponding value present in the httpsession.
我不知道这是否会工作,它也是一个遗憾它西港岛线不能使用Struts框架(在案件的JavaScript被禁用或东西)