一、起因:

  在项目的工厂中,由于某个界面根据产品种类显示的产品属性均不相同,所以决定将界面进行拆分,将每一个产品写入一个jsp界面,分别命名为product0.jsp、product1.jsp,在主界面根据产品id,分别用<c:import>标签引入对应的界面即可。

  这样做的好处是:将可变得界面进行解耦之后,如果增加一个产品,仅需增加一个界面即可,不会影响到其他界面的元素,便于横向扩展,减少了原来主界面的代码量,提升了维护性。

  因为引入界面时候,有一个参数需要传递到被引入界面,却引发了个小小的疑问,经过查找,最终解决了,此处记录解决经历,以备以后参考。

二、问题描述

  jsp界面中引入界面有:

  1、<c:import url="inlayingJsp.jsp"></c:import>

  2、<%@ include file="inlayingJsp.jsp" %>

  3、<jsp:include   page="inlayingJsp.jsp" flush="true"/>

  我的工作中,主要使用jstl进行编辑jsp界面,所以选择第一种。如果网被引入界面传递参数,第一反应是如下写法

<c:import url="inlayingJsp.jsp?opType=edit"></c:import>  

  可是在子界面以${opType},取值为空。

  怀疑是否没有传递过来,查了下标签的使用方法,将参数的传递方法改为

<c:import url="inlayingJsp.jsp">
<c:param name="opType" value="edit"/>
</c:import>

  这是标准的jstl的传递参数写法,但是很不幸,仍然无法取到值。

  接着研究了下标签,发现其他参数,比如var,可是尝试后还是不行。

  在网上看到有一篇文章,将百度引为子页,语法为:

<c:import url="https://www.baidu.com/s">
<c:param name="wd" value="搜索内容"/>
</c:import>

  试了下,子页不但显示了百度,而且确实进入了搜索界面。于是考虑之前子页获取参数的方法是否有误。

  试了下标准的jsp写法,可以正确获取到值:  

<%
String opType=request.getParameter("opType");
out.print(opType);
%>

  问题锁定为el表达式有问题,继续google之,正确写法为:

${param.opType}

三、结论

  问题其实很小,但也花了快一个小时,回想起来主要是一直使用jstl进行界面编写,缺乏对原生jsp的研究,以后要记得改进。

  

  

  

[工作bug]c:import参数传递问题解析的更多相关文章

  1. 日常工作bug总结

    1.在使用jQuery的text()与val()使用时,如果按钮是<button></button>的形式使用text()写入时,在IE8下会出现延迟,即我在写定时器5秒倒计时 ...

  2. [工作bug]一个weblogic跨应用导致session丢失的bug之旅

    近来,发布一个应用,开发和本地测试一切都好,一旦部署到测试环境之后,坑爹的问题随之而来,应用程序不定时的超时,导致用户正在操作过程中被踢了出来,纠结了几天,终于在今天将此问题搞定: 1.系统架构 系统 ...

  3. 使用import简化spring的配置 spring import 标签的解析 使用import或加载spring配置时,报错误There is no ID/IDREF 多个Spring配置文件import resource路径配置

    spring-import 标签的解析.使用案例: 对于spring配置文件的编写,我想,对于经历过庞大项目的人,都有那种恐惧的心理,太多的配置文件.不过,分模块都是大多数人能想到的方法,但是,怎么分 ...

  4. 测开之路一百二十五:flask之urlencode参数传递和解析

    当get请求传参时,用?分隔参数和域名,用&分隔参数,如果参数里面本身就有&符号就会识别不出来,还是会当成分隔符,所以这些数据在传输的时候,就需要转义,现在普遍是转成urlencode ...

  5. 【接口参数解析BUG】SpringMVC接口参数解析

    今天遇到一个BUG,前端传递数字数组时,后端使用字符串类型去接收,结果无法接收到,代码如下 问题: GET请求: 前端: configJsonArray:[1,2] 后端: private Strin ...

  6. 将Lambda表达式作为参数传递并解析-在构造函数参数列表中使用Lambda表达式

    public class DemoClass { /// <summary> /// 通过Lambda表达式,在构造函数中赋初始值 /// </summary> /// < ...

  7. JavaScript的工作原理:解析、抽象语法树(AST)+ 提升编译速度5个技巧

    这是专门探索 JavaScript 及其所构建的组件的系列文章的第 14 篇. 如果你错过了前面的章节,可以在这里找到它们: JavaScript 是如何工作的:引擎,运行时和调用堆栈的概述! Jav ...

  8. 【死磕 Spring】—– IOC 之解析Bean:解析 import 标签

    原文出自:http://cmsblogs.com 在博客[死磕Spring]----- IOC 之 注册 BeanDefinition中分析到,Spring 中有两种解析 Bean 的方式.如果根节点 ...

  9. 第九章:Servlet工作原理解析

    9.1 从Servlet容器说起 Servlet和Servlet容器的关系,就像枪和子弹的关系,彼此依存又互相独立发展,这一切都是为了适应工业化生产.从技术角度来说,是为了解耦,通过标准化接口来互相协 ...

随机推荐

  1. mysql时间字符串按年/月/天/时分组查询

    SELECT DATE_FORMAT( deteline, "%Y-%m-%d %H" ) , COUNT( * ) FROM test GROUP BY DATE_FORMAT( ...

  2. 【python】sql语句插入中内容同时包含单引号和双引号的解决办法

    在python中调用MySQLdb模块插入数据信息,假设待输入信息data为: Hello'World"! 其中同时包含了单引号和双引号 一般插入语句为 sql = "insert ...

  3. codeforces gym 100286 I iSharp (字符串模拟)

    题目链接 给定一个字符串.输入是int& a*[]&, b, c*; 输出是 int&&[]* a;int& b;int&* c; 输入格式里逗号后面一 ...

  4. php面向对象:封装

    OOP三大特性:封装.继承.多态. 封装的目的:为了让类更安全封装的做法:1.类里面的成员变量做为private2.使用成员方法来间接访问成员变量3.在该方法里面加限制条件 注意:php类里面不允许出 ...

  5. Google140道面试题

    FQ找来,可能历史比较悠久了,慢慢看. 原文连接:http://www.impactinterview.com/2009/10/140-google-interview-questions/ Goog ...

  6. 第K 小数

    [问题描述]有两个正整数数列,元素个数分别为N和M.从两个数列中分别任取一个数相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少.[输入格式]输入文件名为number.in.输入文件包 ...

  7. 简易qq对话框

    //本程序由QT5 creator编译可运行 //dialog.h 1 #ifndef DIALOG_H #define DIALOG_H #include <QDialog> class ...

  8. chaper3_exerise_UVa455_周期串

    #include<iostream> #include<cstring> #include<stdio.h> using namespace std; ; int ...

  9. 使用vsphere client 克隆虚拟机

    免费的VMWare ESXi5.0非常强大,于是在vSphere5.0平台中ESXi取代了ESX.,使用ESXi经常会遇到这样的问题,我需要建立多个虚拟机,都是windows2003操作系统,难道必须 ...

  10. tomcat和apache区别联系

    tomcat和apache区别联系 Apache是普通服务器,本身只支持html即普通网页.不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat, 就是说通过Apac ...