`
小风儿
  • 浏览: 6750 次
  • 性别: Icon_minigender_1
  • 来自: 廊坊
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于用struts2框架中iframe对应的jsp页面的不到action的值的问题

    博客分类:
  • JSP
阅读更多
关于用struts2框架中iframe对应的jsp页面的不到action的值的问题

我们做web项目经常会用到frameset、frame以及iframe,这大大方便了我们页面的构建以及模块功能的划分。
但是,再使用这些技术的同时也会遇到各种各样的问题,其中一个就是子页面中得不到struts2的action的值。

之前自己在做项目的时候也遇到了这个问题。
在网上查阅了大量的资料,现将自己的总结与结论与大家一起分享。

frameset、frame经实践是没有问题的,如果因为种种原因也出现的话,那么请参考iframe。

现在具体讨论一下iframe的问题:

首先要明确一下出现这个问题的原因,那就是:action的ValueStack、Stack Context能够做到达的范围(我暂时称它为action的作用域,不一定准确,但是便于理解)
只到result跳转到的第一个jsp页面,也就是说当前action的值仅在此jsp页面可以使用,其他的页面是不可以的(其他jsp得到的值是其他action的值)。

要解决iframe的问题,上面句话必须要理解。

下面来看一下iframe的用法:
<iframe src = "***.jsp" />

可以看到,iframe的src恰恰对应的是另外的jsp页面,因此这个jsp页面是无法得到的(如果没有其他的action直接跳转的该jsp页面的话)。

那么怎么解决这个问题呢,
<iframe src = "***.action" />

不是换后缀名,而是让iframe的src指向一个action,action对应的方法完成相应的增删查改操作,最后返回一个页面,那么这个页面就在此iframe中使用了

为便于家理解,下面粘贴一个例子,供大家参考:

mainFrame.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
  </head>
  <body>
<iframe name="A" src = "Blog_list" /><!-- Blog_list:BlogAction.java 的list方法 -->
<iframe name="B" src = "Blog_menu" /><!-- Blog_menu:BlogAction.java 的menu方法 -->
  </body>
</html>


struts.xml

<package name="front" namespace="/" extends="struts-default">     
    <!-- 第一个*代表你用的哪个action,第二*个是你用的哪个方法 -->
       <action name="*_*" class="com.blog.action.{1}Action" method="{2}">
       <result name="menu">/menu.jsp</result>      
           <result name="list">/list.jsp</result>
       </action>
</package>


BlogAction.java

public String menu(){
menus = blogService.getMenu();
return "menu";
}


public String list(){
blogs = blogService.getList();
return "list";
}


menu.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
  </head>
  <body>
<s:iterator value="menus">    
<s:property value="menu">
</s:iterator>
  </body>
</html>


list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
  </head>
  <body>
<s:iterator value="blogs">    
<s:property value="title">
</s:iterator>
  </body>
</html>

如果弄清楚了就是这样简单,但是对于习惯传统写法的这里有个问题,那就是以前都是同一查询,然后在页面里统一显示

BlogActon.java

public String list(){
menus = blogService.getMenu();
blogs = blogService.getList();
return "success";
}


blog.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
  </head>
  <body>
<s:iterator value="menus">    
<s:property value="menu">
</s:iterator>

<s:iterator value="blogs">    
<s:property value="title">
</s:iterator>
  </body>
</html>


但现在却是:由大化小,由繁化简,朝着一个action的方法解决一个功能方向前进,但是这也正是我们需要的。

鉴于本人技术有限只能分析到此,如有什么问题希望大家指正。
分享到:
评论

相关推荐

    ajax iframe jsp 无刷新上传文件.zip

    总结,"ajax iframe jsp 无刷新上传文件.zip"包含的知识点涵盖了Ajax与Iframe结合的文件上传技术,JSP服务器端处理,JavaScript字符串操作,Struts2的验证和链接标签,以及Spring入门和JSP请求Action的方法。...

    struts2.x中使用百度ueditor

    可以使用Struts2的拦截器或自定义过滤器来处理这个问题。 8. **配置Struts2拦截器**:确保Struts2的配置文件中包含了处理POST请求的拦截器,如`params`拦截器,以便正确解析请求参数。 通过以上步骤,你就能在...

    个人JSP页面遗留问题解决方案

    在Struts1中,可以使用类似Struts2的做法,即在Action中返回一个重定向的Action Forward,例如: ```xml &lt;action name="add" class="com.xx.Add"&gt; &lt;/action&gt; ``` 这样,成功添加数据后,用户会被重定向到列表...

    基于ssh拦截器框架Struts2拦截器的登录验证实现

    SSH2 框架中的 Struts2 拦截器功能允许开发者在特定操作执行前或执行后进行自定义处理,例如登录验证、权限检查等。在本文中,我们将探讨如何使用 Struts2 的拦截器来实现登录验证功能。 首先,我们需要了解 Struts...

    struts2文件上传模板

    如果文件上传失败,Struts2会自动重定向到配置的"input"结果,所以需要创建一个对应的JSP页面,如`upload.jsp`,显示错误信息并提供重新上传的选项。 7. **安全性与限制**: 在实际应用中,需要注意对上传文件的...

    tiles+struts2配置文件

    在Java Web开发中,Struts2是一个非常流行的MVC(模型-视图-控制器)框架,而Tiles则是用于构建复杂的Web页面布局的框架。这两者的结合可以极大地提高开发者的工作效率和应用的用户体验。本篇文章将深入探讨如何在...

    struts+ireport报表在页面显示,导出,打印功能

    4. **页面显示**:在Struts的视图层,通常使用JSP页面来展示报表。我们可以通过`JasperViewer`或者自定义的Servlet来在浏览器中显示报表。如果要在页面上直接嵌入报表,可以使用IFrame或者JavaScript进行处理。 5. ...

    JFreeChart(Struts1+jFreeChart)

    5. **JSP页面展示**: 在JSP页面上,通过一个隐藏的IFrame或者JavaScript动态加载图像URL,该URL指向由Struts1 Action生成的图表。由于图表是以图像流的形式返回,所以可以直接在HTML页面上显示。 6. **安全与性能...

    Struts2+上传进度条完美运行

    一种常见的方式是使用jQuery的`Form Plugin`配合`iframe`,因为Struts2的默认提交方式是异步的,不利于获取上传进度。你可以在JSP页面中添加以下代码: ```html &lt;script src="jquery.js"&gt;&lt;/script&gt; ...

    struts文件带进度条上传,文件下载

    在本主题中,“struts文件带进度条上传,文件下载”指的是在Struts框架下实现带有进度条的文件上传与下载功能,同时解决中文乱码问题,并确保兼容各种浏览器。 **文件上传** 在Struts中,文件上传通常使用`struts2...

    Struts/JSP可上传、预览服务器端文件(图片、文件、Flash、多媒体)文件组件

    Struts和JSP是Java Web开发中常用的两个框架,它们被广泛用于构建动态网页应用程序。在Web应用中,用户往往需要上传文件,如图片、文档、Flash或多媒体文件,并能够预览这些文件。这个名为“Struts/JSP可上传、预览...

    struts 整合ckeditor

    2. **创建编辑器实例**:在Struts的JSP视图页面中,使用CKEditor的JavaScript代码创建编辑器实例。例如: ```html &lt;textarea name="content" id="editor"&gt;&lt;/textarea&gt; &lt;script src="js/ckeditor.js"&gt;&lt;/script&gt; ...

    struts拦截器防止未登陆访问内部系统

    拦截器(Interceptor)是Struts2框架中的关键组件之一,用于在执行Action之前或之后进行一系列的预处理或后处理任务。例如,它可以用于身份验证、日志记录、数据校验等。拦截器的设计遵循AOP(面向切面编程)思想,...

    jsp fckeditor 整合 实例

    本实例将探讨如何在`JSP`中整合`FCKeditor`,并利用`Struts2`进行数据交互。 **1. FCKeditor简介** `FCKeditor`提供了丰富的文本编辑功能,包括字体选择、大小调整、颜色设置、插入图片、链接、表格等。它以...

    jsp实现文件上传以及类似百度文库在线阅读.pdf

    2. **Struts2框架配置**:Struts2是一个流行的MVC(Model-View-Controller)框架,用于构建Java Web应用。在本项目中,我们需要将Struts2的相关jar包引入到项目中,以便处理表单提交和控制流程。 3. **上传文件界面...

    easyUI文件

    通过配置Struts2的Action,配合JSON结果类型,可以方便地返回JSON数据供EasyUI组件消费。同时,Struts2的拦截器和验证机制也能确保数据安全和业务逻辑的正确性。 总结来说,"easyUI文件"中包含的tree、layout和tabs...

    Ajax技术详细代码实例《Ajax实例入门》

    在JSP页面中,使用Struts2的Ajax标签: ```jsp 提交" onclick="return false;"/&gt; function sendAjax() { $.ajax({ url: '&lt;s:url action="ajaxAction"/&gt;' + '?input=' + encodeURIComponent($('input[name=...

    ARCH4系统开发指南

    2.28.2 Struts2校验框架应用 71 2.28.2.1 校验配置文件 71 2.28.2.2 角色Insert页面示例 71 2.28.2.3 用户Query页面示例 73 2.28.2.4 多行输入域校验 75 2.29 多语言管理 77 2.29.1 定义输入域的name属性和资源文件 ...

    jQuery Fancybox 无刷新放大图片

    在Struts2中,你可以通过Action返回图片的URL,然后在JSP页面上使用Fancybox来展示。例如,Action中可以返回一个ActionResult,该Result指向一个静态资源(如图片),并在JSP中使用上述方法触发Fancybox。 在实际...

    quee快逸报表的实例

    5. **前端展示**:在Struts的JSP页面中嵌入报表,通常通过IFrame或者JavaScript API实现。 在压缩包文件"queeExp"中,很可能包含了示例项目的源码、报表设计文件以及详细的步骤指南。通过分析这些文件,你可以更...

Global site tag (gtag.js) - Google Analytics