`

让 java 决定 jsp 走向

    博客分类:
  • JAVA
阅读更多
呵呵,让 java 决定 jsp 走向!
在Action里装饰jsp导航栏,按钮栏!相似的主体不一样的页眉页脚哦。呵呵
(在此以演示按钮栏)
一:总体设计
public ActionForward setUpForInsertOrUpdate(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
.....
//页面中最上面的菜单条

request.setAttribute("tabHtml", this .renderTabControlHtml(InitTabControlXml("Detail", operation,flag)));

//页面中最下面的按钮栏

request.setAttribute("buttonHtml", this.renderButtonHtml(InitBottonControlXml("Detail", operation,flag)));


return mapping.findForward(Constants.SETUPDATE);

}
二:显示按钮栏

/**
* 显示按钮工具条
* @param tabType
* @param operation
* @return
*/


private String InitBottonControlXml(String tabType, String operation,String flag) {
StringBuffer buffer = new StringBuffer("<Param>");

if ("List".equalsIgnoreCase(tabType)) {
buffer.append("<button name ='addDist'  onclick='javascript:add()'>填写请假条</button>");
} else if ("Detail".equalsIgnoreCase(tabType)) {
buffer.append("<button name='updateDist' type='submit'>保存</button>");
if ("update".equals(operation)) {
if("0".equals(flag) || flag==null)
buffer.append("<button name='delDist' onclick='del()'>删除</button>");
//buffer.append("<button name='print'  onclick='holiday()'>打印</button>");
}
buffer.append("<button name='cancel' onclick='reback()'>返回</button>");
}
buffer.append("</Param>");
return buffer.toString();
}
三:解析生成的xml
/**
  *
  * @param buttonXml 传入的button xml字符串
  * @return 解析后的 button html串
  * @throws Exception
  */

public String renderButtonHtml(String buttonXml) throws Exception{

    Reader in= new StringReader(buttonXml);

StringWriter writer = new StringWriter();

try{
ServletContext context = this.getServlet().getServletContext();
String sheetname = context.getRealPath("/commons/button/xml/buttonxsl.xsl");

   SAXBuilder builder = new SAXBuilder();
  Document doc = builder.build(in);

   XSLTransformer transformer = new XSLTransformer(sheetname);
   Document doc2 = transformer.transform(doc);
 
   XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat().setEncoding("UTF-8"));
   outp.output(doc2, writer);
  
}catch(Exception ex){
ex.getMessage();
}
return writer.toString();
}
四("/commons/button/xml/buttonxsl.xsl"),注意了没?
看核心东东:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="/">
  <span>
<xsl:for-each select="Param/*">
<xsl:choose>
<xsl:when test="name()='button' or name()='a' or name()='checkbox' or name()='select'">
<xsl:apply-templates select="."/>
</xsl:when>
<xsl:when test="name()='group'">
<xsl:for-each select="./*">
<xsl:apply-templates select="."/>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</span>
</xsl:template>
<xsl:template match="button">
<button>
<xsl:if test="./@name">
<xsl:attribute name="name"><xsl:value-of select="./@name"/></xsl:attribute>
<xsl:attribute name="id">bt_<xsl:value-of select="./@name"/></xsl:attribute>
</xsl:if>
<xsl:attribute name="onclick"><xsl:value-of select="./@onclick"/></xsl:attribute>
<xsl:if test="./@type">
<xsl:attribute name="type"><xsl:value-of select="./@type"/></xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="normalize-space(.)='新增' or normalize-space(.)='新 增'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_new.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='删除' or normalize-space(.)='删 除'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_del.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='保存' or normalize-space(.)='保 存'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_save.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='查询' or normalize-space(.)='查 询'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_search.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='打印' or normalize-space(.)='打 印'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_print.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='确认' or normalize-space(.)='确 认'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_ok.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='关闭' or normalize-space(.)='关 闭'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_close.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='选中' or normalize-space(.)='选 中'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_select.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='提交' or normalize-space(.)='提 交'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_submit.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='审批' or normalize-space(.)='审 批'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_check.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(.)='退审' or normalize-space(.)='退 审'">
<xsl:attribute name="style">background-image:url(commons/button/images/button_false.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:if test="string-length(.) &lt; 3">
<xsl:attribute name="style">background-image:url(commons/button/images/button_null2.gif);width:64px;margin-right:5px;</xsl:attribute>
</xsl:if>
<xsl:if test="string-length(.) &gt; 3">
<xsl:attribute name="style">background-image:url(commons/button/images/button_null1.gif);width:80px;margin-right:5px;</xsl:attribute>
</xsl:if>
<xsl:value-of select="normalize-space(.)"/>
</xsl:otherwise>
</xsl:choose>
</button>
</xsl:template>
<xsl:template match="a">
<font class="abutton">
<xsl:if test="./@name">
<xsl:attribute name="name"><xsl:value-of select="./@name"/></xsl:attribute>
<xsl:attribute name="id">bt_<xsl:value-of select="./@name"/></xsl:attribute>
</xsl:if>
<xsl:attribute name="onclick"><xsl:value-of select="./@onclick"/></xsl:attribute>
<xsl:value-of select="."/>
</font>
</xsl:template>
<xsl:template match="checkbox">
<input type="checkbox">
<xsl:if test="./@name">
<xsl:attribute name="name"><xsl:value-of select="./@name"/></xsl:attribute>
<xsl:attribute name="id">bt_<xsl:value-of select="./@name"/></xsl:attribute>
</xsl:if>
<xsl:if test="./@onclick">
<xsl:attribute name="onclick"><xsl:value-of select="./@onclick"/></xsl:attribute>
</xsl:if>
<xsl:if test="./@checked">
<xsl:attribute name="checked"/>
</xsl:if>
</input>
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="select">
<select>
<xsl:if test="./@name">
<xsl:attribute name="name"><xsl:value-of select="./@name"/></xsl:attribute>
<xsl:attribute name="id">bt_<xsl:value-of select="./@name"/></xsl:attribute>
</xsl:if>
<xsl:if test="./@onchange">
<xsl:attribute name="onchange"><xsl:value-of select="./@onchange"/></xsl:attribute>
</xsl:if>
<xsl:for-each select="./option">
<option>
<xsl:if test="./@value">
<xsl:attribute name="value"><xsl:value-of select="./@value"/></xsl:attribute>
</xsl:if>
<xsl:if test="./@selected">
<xsl:attribute name="selected"/>
</xsl:if>
<xsl:value-of select="."/>
</option>
</xsl:for-each>
</select>
</xsl:template>
<xsl:template match="text">
<input type="text" class="seektext">
<xsl:if test="./@name">
<xsl:attribute name="name"><xsl:value-of select="./@name"/></xsl:attribute>
<xsl:attribute name="id">bt_<xsl:value-of select="./@name"/></xsl:attribute>
</xsl:if>
<xsl:if test="./@onchange">
<xsl:attribute name="onchange"><xsl:value-of select="./@onchange"/></xsl:attribute>
</xsl:if>
<xsl:if test="./@width">
<xsl:attribute name="style">width:<xsl:value-of select="./@width"/></xsl:attribute>
</xsl:if>
</input>
</xsl:template>
</xsl:stylesheet>
嘿嘿,明白否?
其实jsp导航栏原理一样,想要导航栏的留下大名哦
0
0
分享到:
评论

相关推荐

    Java知识Java开发工具

    另一方面,Struts是一个专为Java Servlet和JSP技术设计的开源框架,遵循MVC设计模式,提供了ControllerServlet,用于调度Action对象处理用户请求,从而简化Web应用程序的开发流程。 综上所述,选择合适的Java开发...

    基于JAVA JSP企业人事管理系统的毕业设计, 人事管理信息系统 数据流程 系统结构设计 数据结构设计

    对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高...

    Java笔试题

    8. **Struts框架**:在Struts框架中,Action类的execute方法处理业务逻辑,返回一个String对象,决定流程走向,控制权交给Result组件。 9. **多线程实现**:Java中创建多线程有两种方式,一是继承Thread类,二是...

    Java工程师考试题(答案).pdf

    8. **Struts框架**:在Struts框架中,Action类的execute方法处理业务逻辑,返回String对象决定控制流走向,result组件根据返回值决定下一步操作。 9. **多线程实现**:Java中创建线程有两种方式,一是继承Thread类...

    Myeclipse下jsp网页工程创建Struts.pdf

    Action类通常用于处理用户的请求,它与Form Bean关联,并决定后续的业务逻辑走向。例如,创建一个名为`ConfigAction`的Action,Type字段应指定Action类的完整包路径。 6. **配置Action和Form的关系**: 在`struts-...

    Java web自定义标签知识.docx

    总结,Java Web自定义标签提供了一种强大的机制,让开发者能够扩展JSP语言,创建符合项目需求的定制化标签。通过理解标签的生命周期、返回值的作用以及如何编写TLD文件,我们可以有效地利用这一特性来优化Web应用...

    基于JSP毕业设计-企业人事管理系统(源代码+论文).zip

    对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高...

    基于JSP毕业设计-企业人事管理系统设计(源代码+论文).zip

    对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高...

    JSP企业人事管理系统设计(源代码+lw).zip

    对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高...

    [计算机毕设]基于jsp的企业人事管理系统设计与实现(源代码+项目报告).zip

    对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高...

    Struts2框架 jar JAVA开发 Struts2.jar架包 Struts2开发实例

    Action类中的方法返回值决定了控制流程的走向,返回值可以是字符串,对应不同的结果视图。 **拦截器** 拦截器是Struts2的另一大特色,它允许开发者在Action调用前后执行自定义逻辑。常见的拦截器有Params(处理参数...

    基于JSP的人事管理系统毕业论文

    动企业劳动人事管理走向科学化、规范化的必要条件;计算机管理所无法比拟的 优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。 这些优点能够极大地提高人事管理的效率 ,也是企业的科学化、...

    自定义mystruts

    在Java Web开发领域,Struts框架是MVC(Model-View-Controller)设计模式的一种实现,极大地简化了Web应用的构建。然而,有时我们需要根据项目需求对Struts进行定制,使其更符合我们的业务逻辑。本文将深入探讨如何...

    案例课程B-S架构-1期 详细设计说明书5-档案鉴定模块.pdf

    算法设计如图2.2所示,主要基于用户提交的选择,通过判断Type的值来决定流程走向,如进入dangAnList_AJ.jsp、dangAnList_WJ.jsp或recycleList.jsp。 三、系统资源与程序设计 系统资源的使用需要考虑到效率和一致性...

    Struts 入门源码

    Action类的execute方法返回一个字符串,该字符串对应struts-config.xml中定义的forward名称,决定控制流走向。 3. **Form Bean**:Struts框架通过Form Bean实现模型层的数据封装。Form Bean通常对应一个Java类,...

    struts-2.3.24-all_含有实例可用于环境搭建

    Action类通常包含多个方法,每个方法对应一个特定的用户操作,通过`execute()`方法的返回值来决定流程走向。 配置文件struts.xml是Struts2的中心配置,用于定义Action、结果类型、拦截器等。例如: ```xml ...

    ActionServlet demo

    3. **module2**:可能包含了Action类,这些类是Struts的核心组件,它们实现了Struts的Action接口,执行具体的业务逻辑并返回对应的ActionForward,决定用户请求的下一步走向。 4. **module6**:可能包含了JSP页面,...

    struts1.3 入门级例子

    Action负责业务逻辑的处理,例如验证数据、调用服务层方法等,并最终决定控制流程走向,返回一个ActionForward对象指示下一步的动作。 2. **Form Beans**: Form Beans(表单豆)是Struts用来封装用户输入数据的对象...

    struts2 框架搭建

    例如,我们可以创建一个名为`HelloWorldAction`的类,该类有一个`execute`方法,返回类型为`String`,返回值决定了控制流的走向。 ```java public class HelloWorldAction { public String execute() { return ...

Global site tag (gtag.js) - Google Analytics