<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>hejianhuacn</title>
    <description></description>
    <link>http://hejianhuacn.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>如何把值传递给velocity定义的模板？在模板中又怎样获得值？</title>
        <author>hejianhuacn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hejianhuacn.javaeye.com">hejianhuacn</a>&nbsp;
          链接：<a href="http://hejianhuacn.javaeye.com/blog/163046" style="color:red;">http://hejianhuacn.javaeye.com/blog/163046</a>&nbsp;
          发表时间: 2008年02月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在使用Spring+Hibernate+Webwork2+DWR做一个项目，里面要使用一个三级联动的地区控件，就使用Velocity封装了一个模板，</p><pre name="code" class="java">&lt;nobr&gt;
#*
	地区编码规则：省份2位编码
			    市4位
			    区/县6位
*#
##parse(&quot;/template/xhtml/controlheader.vm&quot;)
##获得页面控件的name
#set ($areaControl=$parameters.name)
##获得需要初始化的值
#set ($areaNumID=$parameters.value) ##问题出在这里？
&lt;select name=&quot;${areaControl}_provience&quot; onchange=&quot;${areaControl}_initCity()&quot;&gt;
	&lt;option value=&quot;&quot;&gt;请选择省份&lt;/option&gt;&lt;/select&gt;
	&lt;select name=&quot;${areaControl}_city&quot; onchange=&quot;${areaControl}_initTown()&quot;&gt;
	&lt;option value=&quot;&quot;&gt;请选择城市&lt;/option&gt;&lt;/select&gt;
	&lt;select name=&quot;${areaControl}_town&quot; onchange=&quot;${areaControl}_initValue()&quot;&gt;
	&lt;option value=&quot;&quot; &gt;请选择区县&lt;/option&gt;&lt;/select&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;${areaControl}&quot; 
	##判断是否有初始化值
	#if($parameters.value)
		value=&quot;$parameters.value&quot;
	#else 
		value=&quot;&quot;
	#end 
	&gt;
&lt;/nobr&gt;
&lt;script language=&quot;javascript&quot;&gt;
		var ${areaControl}_value=document.getElementById(&quot;${areaControl}&quot;).value;
  		##初始化省份信息
  		function ${areaControl}_initProvince()
  		{
  			AreaDeal.getProvince(${areaControl}_dealProvince);
  		}
  		##省份信息的回调函数
  		function ${areaControl}_dealProvince(data)
  		{
  			dwr.util.addOptions(&quot;${areaControl}_provience&quot;,data,'id','areaname');
  		}
  		##初始化城市信息
  		function ${areaControl}_initCity()
  		{
  			
  			if(document.getElementById(&quot;${areaControl}_provience&quot;).value!=&quot;&quot;)
  			{
  				AreaDeal.getCity(document.getElementById(&quot;${areaControl}_provience&quot;).value,${areaControl}_dealCity);
  				dwr.util.removeAllOptions(&quot;${areaControl}_town&quot;);
  				dwr.util.addOptions(&quot;${areaControl}_town&quot;,[{name:'请选择区县',value:&quot;&quot;}],'value','name');
  			}
  			document.getElementById(&quot;${areaControl}_city&quot;).value=&quot;&quot;;
  			${areaControl}_initValue();
  		}
  		##城市信息的回调函数
  		function ${areaControl}_dealCity(data)
  		{
  			dwr.util.removeAllOptions(&quot;${areaControl}_city&quot;);
  			dwr.util.addOptions(&quot;${areaControl}_city&quot;,[{name:'请选择城市',value:&quot;&quot;}],'value','name');
  			dwr.util.addOptions(&quot;${areaControl}_city&quot;,data,'id','areaname');	
  		}
  		##初始化区县信息
  		function ${areaControl}_initTown()
  		{
  			if(document.getElementById(&quot;${areaControl}_city&quot;).value!=&quot;&quot;)
  			{
  				AreaDeal.getTown(document.getElementById(&quot;${areaControl}_city&quot;).value,${areaControl}_dealTown);
  			}
  			document.getElementById(&quot;${areaControl}_town&quot;).value=&quot;&quot;;
  			${areaControl}_initValue();
  		}
  		##区县信息的回调函数
  		function ${areaControl}_dealTown(data)
  		{
  			dwr.util.removeAllOptions(&quot;${areaControl}_town&quot;);
  			dwr.util.addOptions(&quot;${areaControl}_town&quot;,[{name:'请选择区县',value:&quot;&quot;}],'value','name');
  			dwr.util.addOptions(&quot;${areaControl}_town&quot;,data,'id','areaname');
  		}
  		##把地区信息保存在隐藏域里
  		function ${areaControl}_initValue()
  		{
  			if(document.getElementById(&quot;${areaControl}_town&quot;).value!=&quot;&quot;)
  				document.getElementById(&quot;${areaControl}&quot;).value=document.getElementById(&quot;${areaControl}_town&quot;).value;
  			else if(document.getElementById(&quot;${areaControl}_city&quot;).value!=&quot;&quot;)
  				document.getElementById(&quot;${areaControl}&quot;).value=document.getElementById(&quot;${areaControl}_city&quot;).value;
  			else if(document.getElementById(&quot;${areaControl}_provience&quot;).value!=&quot;&quot;)
  				document.getElementById(&quot;${areaControl}&quot;).value=document.getElementById(&quot;${areaControl}_provience&quot;).value;
  			else document.getElementById(&quot;${areaControl}&quot;).value=&quot;&quot;;
  		}
  		##初始化有初始地区编号的控件
  		function ${areaControl}_hasValue()
		{
			 ${areaControl}_initProvince();
			if(areaNumValue.length&gt;0 &amp;&amp; areaNumValue.length&lt;7)
			{
				document.getElementById(&quot;${areaControl}_provience&quot;).value=${areaControl}_value.substring(0,2);
			}
			if(areaNumValue.length&gt;2 &amp;&amp; areaNumValue.length&lt;7)
			{
				 ${areaControl}_initCity();
				document.getElementById(&quot;${areaControl}_city&quot;).value=${areaControl}_value.substring(0,4);
			}
			if(areaNumValue.length&gt;2 &amp;&amp; areaNumValue.length&lt;7)
			{
				 ${areaControl}_initTown();
				document.getElementById(&quot;${areaControl}_town&quot;).value=${areaControl}_value;
			}
		}
	#if(${areaNumID})
		document.onLoad=${areaControl}_hasValue();
	#else 
		document.onLoad=${areaControl}_initProvince();
	#end 
&lt;/script&gt;
##parse(&quot;/template/xhtml/controlfooter.vm&quot;)
&lt;/nobr&gt;</pre><p>页面上调用模板的代码为：</p><pre name="code" class="html">&lt;ww:textfield name=&quot;areaNum&quot; value=&quot;110501&quot; template=&quot;AreaControl.vm&quot; theme=&quot;xhtml&quot;  &gt;&lt;/ww:textfield&gt;</pre><p>&nbsp;</p><p>取值没有问题，但是当需要把获取的地区编号传到控件里时怎么也不能使控件选取到需要的状态，那位知道怎么回事，指定一下，先谢过了！</p>
          <br/>
          <span style="color:red;">
            <a href="http://hejianhuacn.javaeye.com/blog/163046#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Feb 2008 18:59:37 +0800</pubDate>
        <link>http://hejianhuacn.javaeye.com/blog/163046</link>
        <guid>http://hejianhuacn.javaeye.com/blog/163046</guid>
      </item>
      <item>
        <title>js中cloneNode()的使用 （Blog合并）</title>
        <author>hejianhuacn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hejianhuacn.javaeye.com">hejianhuacn</a>&nbsp;
          链接：<a href="http://hejianhuacn.javaeye.com/blog/145938" style="color:red;">http://hejianhuacn.javaeye.com/blog/145938</a>&nbsp;
          发表时间: 2007年12月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在web页面中经常需要出现许多完全一样的控件项，而需要控件的多少完全由用户输入量决定，在js中可以很容易的实现这点，效果展示大多时候比语言来得更有魅力。<br /><br /><pre name="code" class="java">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
&lt;html xmlns="http://www.w3.org/1999/xhtml">
&lt;head>
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
&lt;title>控件cloneNode（）方法的使用&lt;/title>
&lt;script language="javascript">
 i=1;
 function AddRow()
 {
   var tableObject=new Object();
   
   var isneed=true;
   
   tableObject=document.getElementById("CloneNodeShow");
   //判断是否有必要添加新的输入行
   for(var j=0;j&lt;tableObject.all.tags("input").length;j++)
   {
    var inputs = tableObject.all.tags("input")[j]; 
    if(inputs.type=="text" && inputs.value=="")
    {
     isneed=false;
    }
   }
   if(isneed)
   {
    //添加一行   
    var newTR=tableObject.insertRow();
    var td0=newTR.insertCell();
    var td1=newTR.insertCell();
    var td2=newTR.insertCell();
    var td3=newTR.insertCell();
    
    td0.innerHTML=(++i)+'.';
    td1.innerHTML='&lt;input type="text" name="username"/>';
    //true表示深度克隆
    var newSelect=document.getElementById("sexType").cloneNode(true);
    newSelect.id="sexType"+i;
    td2.appendChild(newSelect);
    td3.innerHTML='&lt;input type="text" name="age" onchange="AddRow()"/>';   
   }
 }
&lt;/script>
&lt;/head>
&lt;body>
&lt;form>
 &lt;table id="CloneNodeShow" border="2" bordercolor="#000000">
  &lt;tr>&lt;th>&lt;/th>&lt;th>姓名&lt;/th>&lt;th>性别&lt;/th>&lt;th>年龄&lt;/th>&lt;/tr>
  &lt;tr id="signTR"  >
   &lt;td>1.&lt;/td>
   &lt;td>&lt;input type="text" name="username"/>&lt;/td>
   &lt;td>
    &lt;select name="sexType" id="sexType">
     &lt;option value="%">请选择性别&lt;/option>
     &lt;option value="0">男&lt;/option>
     &lt;option value="1">女&lt;/option>
    &lt;/select>
   &lt;/td>
   &lt;td>&lt;input type="text" name="age" onchange="AddRow()"/>&lt;/td>
  &lt;/tr>
 &lt;/table>
&lt;/form>
&lt;/body>
&lt;/html></pre>
          <br/>
          <span style="color:red;">
            <a href="http://hejianhuacn.javaeye.com/blog/145938#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Dec 2007 17:29:21 +0800</pubDate>
        <link>http://hejianhuacn.javaeye.com/blog/145938</link>
        <guid>http://hejianhuacn.javaeye.com/blog/145938</guid>
      </item>
      <item>
        <title>JasperReport 在Spring中的使用 问题</title>
        <author>hejianhuacn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hejianhuacn.javaeye.com">hejianhuacn</a>&nbsp;
          链接：<a href="http://hejianhuacn.javaeye.com/blog/138725" style="color:red;">http://hejianhuacn.javaeye.com/blog/138725</a>&nbsp;
          发表时间: 2007年11月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近看了《JasperReports for Java Developers》，里面讲了怎么在Spring里使用JasperReport<br />照着里面的例子做了一下，例子是没有问题的，但是我把展现方式改为由JasperReportsHtmlView 展现就出问题了，所有的图片都出不来，是不是使用JasperReportsHtmlView还要配置其它的拦截器或是什么？我在Google里找了一通，也没能解决主要是E文不太好国外的论坛也找了，看得头大，所以把代码贴出来，那位用过的能指点一下，谢过了<br /><br /><strong>web配置文件</strong><br /><pre name="code" class="java">&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	&lt;display-name>ReportWebApp&lt;/display-name>
	&lt;welcome-file-list>
		&lt;welcome-file>index.jsp&lt;/welcome-file>
	&lt;/welcome-file-list>
	&lt;servlet>
		&lt;servlet-name>jasperSpring&lt;/servlet-name>
	&lt;servlet-class>org.springframework.web.servlet.DispatcherServlet 
        &lt;/servlet-class>
		&lt;load-on-startup>1&lt;/load-on-startup>
	&lt;/servlet>
	&lt;servlet-mapping>
		&lt;servlet-name>jasperSpring&lt;/servlet-name>
		&lt;url-pattern>/jasperSpring/*&lt;/url-pattern>
	&lt;/servlet-mapping>
&lt;/web-app></pre><br /><br /><strong>前台Jsp页面：</strong><br /><pre name="code" class="java">&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&lt;html>
	&lt;head>
		&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	&lt;title>Generate Report&lt;/title>
	&lt;/head>
&lt;body>
			Click on the button to generate the report.
&lt;form name="reportForm" action="jasperSpring/report" method="get">&lt;input
	type="submit" name="submitButton" value="Submit" />&lt;/form>
&lt;/body>
&lt;/html></pre><br /><br /><strong>jasperSpring-servlet.xml的内容：</strong><br /><pre name="code" class="java">&lt;?xml version="1.0" encoding="UTF-8" ?>
&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
&lt;beans>
	&lt;bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
		&lt;property name="driverClassName">
			&lt;value>com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/value>
		&lt;/property>
		&lt;property name="url">
			&lt;value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind&lt;/value>
		&lt;/property>
		&lt;property name="username">
			&lt;value>sa&lt;/value>
		&lt;/property>
		&lt;property name="password">
			&lt;value>sa&lt;/value>
		&lt;/property>
	&lt;/bean>
	&lt;bean id="publicUrlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		&lt;property name="mappings">
			&lt;props>
				&lt;prop key="report">jasperController&lt;/prop>
			&lt;/props>
		&lt;/property>
	&lt;/bean>
	&lt;bean id="jasperController"
		class="net.aachina.jasperreport.JasperSpringController">
		&lt;property name="dataSource">
			&lt;ref local="dataSource" />
		&lt;/property>
	&lt;/bean>
	&lt;bean id="viewResolver"
		class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
		&lt;property name="basename" value="views" />
	&lt;/bean>
	&lt;bean id="ImageServlet" class="net.sf.jasperreports.j2ee.servlets.ImageServlet">
	&lt;/bean>
&lt;/beans></pre><br /><br /><div class="quote_title">引用</div><div class="quote_div">views.properties中的内容</div><br /><pre name="code" class="java">
report.class=org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView
#report.class=org.springframework.web.servlet.view.jasperreports.JasperReportsHtmlView
#report.class=net.aachina.jasperreport.render.JasperReportsHtmlView
report.url=reports/ChartReportDemo.jasper
</pre><br /><br />控制器JasperSpringController的源码：<br /><pre name="code" class="java">
package net.aachina.jasperreport;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import net.sf.jasperreports.engine.JRResultSetDataSource;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class JasperSpringController implements Controller {

	private DataSource dataSource;

	public ModelAndView handleRequest(HttpServletRequest request,	HttpServletResponse response) throws ServletException,	IOException, ClassNotFoundException, SQLException
	{
		
		return new ModelAndView("report", getModel());
	}

	@SuppressWarnings("unchecked")
	private Map getModel() throws ClassNotFoundException, SQLException
	{
		Connection connection;
		Statement statement;
		ResultSet resultSet;
		HashMap model = new HashMap();
		String query = "SELECT"+
			     " Employees.[LastName] AS Employees_LastName,"+
		              " Employees.[FirstName] AS Employees_FirstName,"+
		              " Employees.[EmployeeID] AS Employees_EmployeeID,"+
		              " Orders.[OrderID] AS Orders_OrderID,"+
		              " Orders.[OrderDate] AS Orders_OrderDate "+
		                "  FROM "+
" Employees INNER JOIN  Orders ON Employees.[EmployeeID] = Orders.[EmployeeID]";
		connection = dataSource.getConnection();
		statement = connection.createStatement();
		resultSet = statement.executeQuery(query);
		JRResultSetDataSource resultSetDataSource =new JRResultSetDataSource(resultSet);
		model.put("datasource", resultSetDataSource);
		return model;
		}
	
	public void setDataSource(DataSource dataSource) 
	{
		this.dataSource = dataSource;
	}
}
</pre><br /><br />JasperReport页面在IReport中的效果：<br /><br /><br />页面输出PDF效果：<br /><br /><br />但把输出改为JasperReportsHtmlView页面上的所有图片都显示不出来，应该是还有什么属性值设置的不对，哪位知道的请指点一下，项目里面的Jar包太大了不然把整个项目都上传上来
          <br/>
          <span style="color:red;">
            <a href="http://hejianhuacn.javaeye.com/blog/138725#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 07 Nov 2007 11:51:32 +0800</pubDate>
        <link>http://hejianhuacn.javaeye.com/blog/138725</link>
        <guid>http://hejianhuacn.javaeye.com/blog/138725</guid>
      </item>
  </channel>
</rss>