2008年4月21日星期一

oracle 启动 停止服务bat脚本


net start OracleDBConsolezhaochun
net start OracleOraDb10g_home1iSQL*Plus
net start OracleOraDb10g_home1TNSListener
net start OracleServiceZHAOCHUN


net stop OracleDBConsolezhaochun
net stop OracleOraDb10g_home1iSQL*Plus
net stop OracleOraDb10g_home1TNSListener
net stop OracleServiceZHAOCHUN

把zhaochun改成自己的服务名

2008年4月16日星期三

一头动物 总是瞎感慨

谁没有一些刻骨铭心事
谁能预计后果
谁没有一些旧恨心魔
一点点无心错
谁没有一些得不到的梦
谁人负你负我多
谁愿意解释为了什么
一笑已经风云过

2008年4月14日星期一

也成万儿了 哈哈

一个周末,两天,除了吃饭一动不动坐在家里写代码,坐的我屁股疼,腰疼,脖子疼,脑袋疼,眼睛疼....由于决策缺乏前瞻,之前买的一个报表共享控件不能满足现在的新需求,其实原来也有,只是不知道这s控件干不了这活儿,求助作者接连几天都没回音。
被迫将这该死的控件从系统中剥离,想别的办法代替,本来第一种方案使用水晶报表的,研究了一晚上没有进展,放弃,主要是水晶报表画格子太不方便了,也不知道是不是我没找到良方,现在改用了word,在里面画表格保存成模板,然后用程序填充数据。
现在周末过完了,欣慰的是基本上旧的控件程序都剃掉了,换上了word模板,这样最大的缺点就是速度,如果数据量大会很慢,还好,这是个小系统,数据量不算大。
准备收工,洗个澡休息,明儿好上班,突然想起上来空间看看,发现访问量一万多了都,哈哈
本来还想10000的时候抓个图呢,一不小心,过了,呵呵

2008年4月9日星期三

div层随滚动条滚动

<html>
<head>
    <title>弹出div</title>


   <style>
.#floater {
visibility: hidden;
background-color: #f7fcfe;
z-index: 100;
width: 300px;
height: 50px;
position: absolute;
text-align: center;
font-size: 30px;
color: #FF0000;
font-weight: bold;
vertical-align: middle;
}
</style>



<script language="javaScript">
function show()
{
    var d_dialog = document.getElementById('dialog');
    d_dialog.style.top = document.body.clientHeight / 2 - 60;
    d_dialog.style.left =document.body.clientWidth / 2 -100;
    d_dialog.style.visibility='visible';
    init();
}


function divBlock_event_mousedown()
{
    var e, obj, temp;
    obj=document.getElementById('dialog');
    e=window.event?window.event:e;
    obj.startX=e.clientX-obj.offsetLeft;
    obj.startY=e.clientY-obj.offsetTop;
    document.onmousemove=document_event_mousemove;
    temp=document.attachEvent?document.attachEvent('onmouseup',document_event_mouseup):document.addEventListener('mouseup',document_event_mouseup,'');
}


function document_event_mousemove(e)
{
    var e, obj;
    obj=document.getElementById('dialog');
    e=window.event?window.event:e;
    with(obj.style){
        position='absolute';
        left=e.clientX-obj.startX+'px';
        top=e.clientY-obj.startY+'px';
        }
}

function document_event_mouseup(e)
{
    var temp;
    document.onmousemove='';
    temp=document.detachEvent?document.detachEvent('onmouseup',document_event_mouseup):document.removeEventListener('mouseup',document_event_mouseup,'');
}
</script>
<script language="JavaScript">
self.onError=null;     
currentX = currentY =0;     
whichIt = null;     
lastScrollX =-10; lastScrollY = -100;     
NS = (document.layers) ? 1 : 0;     
IE = (document.all) ? 1: 0;     
<!-- STALKER CODE -->     
function heartBeat() {     
    if(IE) { diffY = document.body.scrollTop; diffX = document.body.scrollLeft; }     
    if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }     
    if(diffY != lastScrollY) {     
        percent = .1 * (diffY - lastScrollY);     


        if(percent > 0) percent = Math.ceil(percent);     
        else percent = Math.floor(percent);     
        if(IE) document.all.dialog.style.pixelTop += percent;     
        if(NS) document.dialog.top += percent;     
        lastScrollY = lastScrollY + percent;     
    }     
    if(diffX != lastScrollX) {     
        percent = .1 * (diffX - lastScrollX);     
        if(percent > 0) percent = Math.ceil(percent);     
        else percent = Math.floor(percent);     
        if(IE) document.all.dialog.style.pixelLeft += percent;     
        if(NS) document.dialog.left += percent;     
        lastScrollX = lastScrollX + percent;     
    }     
}     


<!-- /STALKER CODE -->     
<!-- DRAG Drop CODE -->     
function checkFocus(x,y) {     
    stalkerx = document.dialog.pageX;     
    stalkery = document.dialog.pageY;     
    stalkerwidth = document.dialog.clip.width;     
    stalkerheight = document.dialog.clip.height;     
    if( (x > stalkerx && x < (stalkerx+stalkerwidth)) && (y > stalkery && y < (stalkery+stalkerheight))) return true;     
    else return false;     
}     
function grabIt(e) {     
    if(IE) {     
        whichIt = event.srcElement;     
        while (whichIt.id.indexOf("dialog") == -1) {     

            whichIt = whichIt.parentElement;     
            if (whichIt == null) { return true; }     
        }     
        whichIt.style.pixelLeft = whichIt.offsetLeft;     
        whichIt.style.pixelTop = whichIt.offsetTop;     
        currentX = (event.clientX + document.body.scrollLeft);     
        currentY = (event.clientY + document.body.scrollTop);     
        } else {     
            window.captureEvents(Event.MOUSEMOVE);     
            if(checkFocus (e.pageX,e.pageY)) {     
                whichIt = document.dialog;     
                StalkerTouchedX = e.pageX-document.dialog.pageX;     
                StalkerTouchedY = e.pageY-document.dialog.pageY;     
            }     
    }     


    return true;     
}

function moveIt(e) {     
if (whichIt == null) { return false; }     
if(IE) {     
newX = (event.clientX + document.body.scrollLeft);     
newY = (event.clientY + document.body.scrollTop);     
distanceX = (newX - currentX); distanceY = (newY - currentY);     
currentX = newX; currentY = newY;     
whichIt.style.pixelLeft += distanceX;     
whichIt.style.pixelTop += distanceY;     
if(whichIt.style.pixelTop < document.body.scrollTop) whichIt.style.pixelTop = document.body.scrollTop;     
if(whichIt.style.pixelLeft < document.body.scrollLeft) whichIt.style.pixelLeft = document.body.scrollLeft;     
if(whichIt.style.pixelLeft > document.body.offsetWidth - document.body.scrollLeft - whichIt.style.pixelWidth - 20) whichIt.style.pixelLeft = document.body.offsetWidth - whichIt.style.pixelWidth - 20;     
if(whichIt.style.pixelTop > document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5) whichIt.style.pixelTop = document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5;     
event.returnValue = false;     
} else {     
whichIt.moveTo(e.pageX-StalkerTouchedX,e.pageY-StalkerTouchedY);     
if(whichIt.left < 0+self.pageXOffset) whichIt.left = 0+self.pageXOffset;     
if(whichIt.top < 0+self.pageYOffset) whichIt.top = 0+self.pageYOffset;     
if( (whichIt.left + whichIt.clip.width) >= (window.innerWidth+self.pageXOffset-17)) whichIt.left = ((window.innerWidth+self.pageXOffset)-whichIt.clip.width)-17;     
if( (whichIt.top + whichIt.clip.height) >= (window.innerHeight+self.pageYOffset-17)) whichIt.top = ((window.innerHeight+self.pageYOffset)-whichIt.clip.height)-17;     
return false;     
}     
return false;     
}     
function dropIt() {     
whichIt = null;     
if(NS) window.releaseEvents (Event.MOUSEMOVE);     
return true;     
}     
<!-- DRAG Drop CODE -->     
if(NS) {     
window.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN);     
window.onmousedown = grabIt;     
window.onmousemove = moveIt;     
window.onmouseup = dropIt;     
}     
if(IE) {     
document.onmousedown = grabIt;     
document.onmousemove = moveIt;     
document.onmouseup = dropIt;     
}     
if(NS || IE) action = window.setInterval("heartBeat()",1);     
</script>
</head>
<div id ="dialog" onmousedown="divBlock_event_mousedown()">在这里面定义html内容美化</div>
<body onload="show()">
    <table border='0' width="100%" height="100%">
        <tr>
            <td>
                测试
            </td>
        </tr>
        <tr>
           <td>
             处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>
            处理中,请等待……<br>

            <br>
            <br>
            <br>
            <br>
           </td>
        </tr>
    </table>
</body>
</html>

鼠标移入中显示提示信息

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<style type="text/css">
<!--

.#opstatdiv {
   visibility: hidden;
   background-color: #f7fcfe;
   z-index: 100;
   width: 200px;
   height: 50px;
   position: absolute;
   text-align: left;
   font-size: 12px;
   color: #FF0000;
   font-weight: bold;
   vertical-align: middle;
}
-->
</style>
<script type="text/javascript">

function showOpstatView()
{
var msgStr = "提示信息";
var d_dialog = document.getElementById('opstatdiv');
d_dialog.innerHTML = msgStr;
d_dialog.style.posLeft = document.body.scrollLeft + event.clientX + 10;
d_dialog.style.posTop = document.body.scrollTop + event.clientY;
  
d_dialog.style.visibility='visible';

}

function opstatDivClose()
{
    var d_dialog = document.getElementById('opstatdiv');
    d_dialog.style.visibility='hidden';
}

</script>
</HEAD>

<BODY>
<div id="opstatdiv"></div>
<table>
<tr>
   <td onmouseover="javascript:showOpstatView()" onmouseout="javascript:opstatDivClose()">>
   靠近我
   </td>
</tr>
</table>
</BODY>
</HTML>

C#操作Word中的表格

C#操作Word中的表格

            object oMissing = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Word._Application oWord;
            Microsoft.Office.Interop.Word._Document oDoc;
            oWord = new Microsoft.Office.Interop.Word.Application();
            //显示word文档
            oWord.Visible = true;
            //取得word文件模板
            object fileName = System.Windows.Forms.Application.StartupPath + "\\word.doc";
            //根据模板生成一个新文档,相当于另存为
            oDoc = oWord.Documents.Add(ref fileName, ref oMissing,
                            ref oMissing, ref oMissing);
            //在这里操作表格中的文本
            oDoc.Tables[1].Cell(1, 1).Range.Text = "cell11";


            //MessageBox.Show(oDoc.Content.Paragraphs[3].Range.Text);

遇到的问题

1、开始时添加word动态链接库引用出错,在引用里面有黄色感叹号,在baidu上搜,找到原因,是因为,先安装的office,后安装的.net,默认没有安装.NET Programmability Support(.net可编程支持)。重新启动office安装程序,选修复,将.NET Programmability Support(.net可编程支持)选择安装到本机就OK了。

参考:http://hi.baidu.com/devzhao/blog/item/4248624ab27e102008f7ef2c.html

2、添加word引用的方法,在Program Files\Microsoft Office\OFFICE11中有个MSWORD.OLB文件,添加引用,就行了,还有中办法好象在com组件中找到Microsoft Word 11.0 Object Library也行。

3、操作word文档的代码参考:http://tmsoft.lsxy.com/index.php?load=read&id=334#comm_top

另外,还不知道,这样的代码对客户机配置有什么要求,office是肯定必须安装了,安装的版本有限制没,以后客户自己升级个office 2007会不会有问题????

高手看到了,麻烦告诉小弟一下,谢过!!!

2008年4月8日星期二

vss for eclipse 显示签出状态

vss for eclipse 显示签出状态老是无缘无故没了,还得每次到baidu上搜,这次记下来省得忘,呵呵

2008年4月3日星期四

Java 持久性 API(JPA)

JPA(Java Persistence API)
JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持。Sun这次吸取了之前EJB规范惨痛失败的经历,在充分吸收现有ORM框架的基础上,得到了一个易于使用、伸缩性强的ORM规范。

2008年4月1日星期二

收藏一个现实右键菜单的demo

<%--

/**

*实现右键菜单功能

*/

--%>

<html>
    <body oncontextmenu = showMenu('')>
        <form name = "menuForm">
            <!--隐藏框,用来保存选择的菜单的id值-->
            <input type = "hidden" name = "id" value = "">
            <table>
            <tr>
       <td><a href="javascript:clickMenu()" oncontextmenu = showMenu('0')>根目录</a></td>
    </tr>
            <tr>
       <td><a href="javascript:clickMenu()" oncontextmenu = showMenu('1')>菜单一</a></td>
    </tr>

            <tr><td><a href="javascript:clickMenu()" oncontextmenu = showMenu('2')>菜单二</a></td></tr>

            </table>
        </form>
    </body>

    <!-- 这里用来定义需要显示的右键菜单 -->
    <div id="itemMenu" style="display:none">
           <table border="1" width="100%" height="100%" bgcolor="#cccccc" style="border:thin" cellspacing="0">
                  <tr>
                      <td style="cursor:default;border:outset 1;" align="center" onclick="parent.create()">
                      新增
                      </td>
                  </tr>
                  <tr>
                      <td style="cursor:default;border:outset 1;" align="center" onclick="parent.update();">
                      修改
                      </td>
                  </tr>
                  <tr>
                      <td style="cursor:default;border:outset 1;" align="center" onclick="parent.del()">
                      删除
                     </td>
                  </tr>
           </table>
    </div>
    <!-- 右键菜单结束-->
</html>


<script language="JavaScript">

/**

*根据传入的id显示右键菜单

*/

function showMenu(id){
    menuForm.id.value = id;

    if("" == id){
        popMenu(itemMenu,100,"100");
    }
    else{
        popMenu(itemMenu,100,"111");
    }

    event.returnValue=false;
    event.cancelBubble=true;
    return false;

}


/**

*显示弹出菜单

*menuDiv:右键菜单的内容

*width:行显示的宽度

*rowControlString:行控制字符串,0表示不显示,1表示显示,如“101”,则表示第1、3行显示,第2行不显示

*/

function popMenu(menuDiv,width,rowControlString){
    //创建弹出菜单
    var pop=window.createPopup();

    //设置弹出菜单的内容
    pop.document.body.innerHTML=menuDiv.innerHTML;
    var rowObjs=pop.document.body.all[0].rows;

    //获得弹出菜单的行数
    var rowCount=rowObjs.length;

    //循环设置每行的属性
    for(var i=0;i<rowObjs.length;i++){
        //如果设置该行不显示,则行数减一
        var hide=rowControlString.charAt(i)!='1';

        if(hide){
            rowCount--;
        }

        //设置是否显示该行

        rowObjs[i].style.display=(hide)?"none":"";

        //设置鼠标滑入该行时的效果

        rowObjs[i].cells[0].onmouseover=function(){
            this.style.background="#818181";
            this.style.color="white";
        }
        //设置鼠标滑出该行时的效果
        rowObjs[i].cells[0].onmouseout=function(){
            this.style.background="#cccccc";
            this.style.color="black";
        }

    }

    //屏蔽菜单的菜单
    pop.document.oncontextmenu=function() {
            return false;
    }

    //选择右键菜单的一项后,菜单隐藏
    pop.document.onclick=function(){
            pop.hide();
    }
    //显示菜单
    pop.show(event.clientX-1,event.clientY,width,rowCount*25,document.body);
    return true;

}
function create(){
    alert("create" + menuForm.id.value + "!");
}

function update(){
    alert("update" + menuForm.id.value + "!");
}
function del(){
    alert("delete" + menuForm.id.value + "!");
}
function clickMenu(){
    alert("you click a menu!");
}
</script>

2008年3月28日星期五

2008年3月27日星期四

昨天用xfire写了第一个webservice

忙里偷闲
研究了一下webservice,做了个hello world
一点理解,xfire能把一个普通java类映射成web服务
首先要建立一个供外部调用的接口interface
然后建立一个类实现这个接口
再然后在service.xml中配置web服务的名字,名称空间,接口类名,实现接口的类名,这个service.xml文件要放在src/META-INF/xfire/services.xml
最后在web.xml中配置xfire 的servlet
OK了
===============接口HelloWorldService 类==================
package com.capinfo.xfire.pojo;
/**
* @author sing
* @explain:
* @datetime:Mar 26, 2008 4:48:19 PM
*/

public interface HelloWorldService {

    public String sayHello();
   
}
==============接口实现类HelloWorldServiceImpl =====================
package com.capinfo.xfire.pojo;
/**
* @author sing
* @explain:
* @datetime:Mar 26, 2008 4:50:15 PM
*/
public class HelloWorldServiceImpl implements HelloWorldService {

    public String sayHello() {
       
        return "this.is.my first web service";
    }

}
===============service.xml==================
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
    <name>HelloWorldService</name>
    <namespace>http://capinfo.com/HelloWorldService</namespace>
    <serviceClass>
        com.capinfo.xfire.pojo.HelloWorldService
    </serviceClass>
    <implementationClass>
        com.capinfo.xfire.pojo.HelloWorldServiceImpl
    </implementationClass>
</service>
</beans>
==============web.xml=======================
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">

    <servlet>
        <servlet-name>XFireServlet</servlet-name>
        <display-name>XFire Servlet</display-name>
        <servlet-class>
            org.codehaus.xfire.transport.http.XFireConfigurableServlet
        </servlet-class>
    </servlet>
   
    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/servlet/XFireServlet/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
===================Test.java========================
package com.capinfo.xfire.pojo;

import java.net.MalformedURLException;

import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

/**
* @author spring
* @explain:
* @datetime:Mar 26, 2008 5:50:02 PM
*/
public class Test {

    public static void main(String [] args){
        Service serviceModel = new ObjectServiceFactory().create(HelloWorldService.class);
        try {
            HelloWorldService service = (HelloWorldService)
                new XFireProxyFactory().create(serviceModel, "http://localhost:8081/xfire/services/HelloWorldService");
            System.out.println(service.sayHello());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
}

======================放jar包========================
"activation-1.1.jar"
"commons-codec-1.3.jar"
"commons-httpclient-3.0.jar"
"commons-logging-1.0.4.jar"
"jaxen-1.1-beta-9.jar"
"jdom-1.0.jar"
"mail-1.4.jar"
"spring-1.2.6.jar"
"stax-api-1.0.1.jar"
"wsdl4j-1.6.1.jar"
"wstx-asl-3.2.0.jar"
"xbean-spring-2.8.jar"
"xfire-all-1.2.6.jar"


参考资源:http://www.blogjava.net/fastzch/archive/2008/01/03/172535.html

早上打开电脑发现可以体验百度Hi了,却

早上打开电脑发现可以体验百度Hi了,第二个发现就是百度Hi不支持代理登录,完了,公司要代理才能上网,岂不是上不了?!郁闷,眼瞅着吧

2008年3月26日星期三

ORA-01461: can bind a LONG value only for insert into a LONG column

ORA-01461: can bind a LONG value only for insert into a LONG column
原来好好的
突然报这样的错误

检查数据库驱动的版本是不是跟数据库一致,升级数据库驱动,问题没有再出现

C# 写日志到文件

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace psms.util
{
    class Log
    {
        /// <summary>
        /// 写日志文件
        /// </summary>
        /// <param name="sMsg"></param>
        public static void WriteLog(string sMsg)
        {
            if (sMsg != "")
            {
                //Random randObj = new Random(DateTime.Now.Millisecond);
                //int file = randObj.Next() + 1;
                string filename = DateTime.Now.ToString("yyyyMM") + ".log";
                try
                {
                    FileInfo fi = new FileInfo(Application.StartupPath + "\\log\\" + filename);
                    if (!fi.Exists)
                    {
                        using (StreamWriter sw = fi.CreateText())
                        {
                            sw.WriteLine(DateTime.Now + "\n" + sMsg + "\n");
                            sw.Close();
                        }
                    }
                    else
                    {
                        using (StreamWriter sw = fi.AppendText())
                        {
                            sw.WriteLine(DateTime.Now + "\n" + sMsg + "\n");
                            sw.Close();
                        }
                    }
                }
                catch(Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
    }
}

2008年3月25日星期二

Struts 禁用的错误

遇到这样一个问题
页面中有几个数据项用struts的<html:select>标签展示,今天提出新的需求,要不允许修改这几个<html:select>,那就禁用咯,这样问题发现了,这个页面是来自action,给<html:select>对应actionForm中的属性付了值,页面显示<html:select>自然就选中被赋值的选项,但是提交表单的时候,数据保存的确总是<html:select>列表中的第一个值,如果去掉禁用,就正常了。晕。
试着在onload中用js禁用也不行
在网上搜到一个这样的写法,实现readonly了<select onbeforeactivate="return false" onfocus="this.blur()" onmouseover="this.setCapture()" onmouseout="this.releaseCapture()">
<option>1</option>
</select>
不过要用到<html:select>中要把onbeforeactivate="return false" 去掉,<html:select>不认识这个属性,不过效果还是实现了。

2008年3月23日星期日

相当相当隐蔽的错误 org.hibernate.hql.ast.QuerySyntaxException: unexpected token


今天周末,被头儿过来改bug
其中一个在hql查询的时候报org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ApplyInfo near line 1, column 23这样的错误,貌似看起来hibernate不认识ApplyInfo这个映射持久类,但是这个类非常确定的是已经映射了,而且在别处用的非常正常。郁闷,找啊找
在网上找org.hibernate.hql.ast.QuerySyntaxException: unexpected token的错误有
1、持久类写错了,要不就是写成了数据库表名
2、hibernate3.0不支持select中嵌套查询,据说from中也不行,只支持where中嵌套查询,好像3.1支持了select中嵌套
3、sql语句中字段是用了保留关键字

然后就是我发现的这个隐蔽错误了
发现的from后的空格是一个全角的空格,半角 空格,全角 空格。距离比一样啊,原来就看出from后面的空格大了,还以为是两个空格呢。

隐蔽,太隐蔽了。

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ApplyInfo near line 1, column 23 [SELECT contCount FROM ApplyInfo where applyId = (select applyId from com.capinfo.hibernate.person.pojo.AContinueInfo where id=25)]
    at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:244)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:134)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:113)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1602)
    at com.capinfo.zgbm.print.dao.PrintQueryDAO.getContinueCount(PrintQueryDAO.java:273)
    at com.capinfo.zgbm.print.action.PrintContinueCountAction.execute(PrintContinueCountAction.java:95)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at com.capinfo.util.LoginFilter.doFilter(LoginFilter.java:61)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at com.capinfo.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:67)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3212)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by: line 1:23: unexpected token: ApplyInfo
    at org.hibernate.hql.antlr.HqlBaseParser.identPrimary(HqlBaseParser.java:4021)
    at org.hibernate.hql.antlr.HqlBaseParser.primaryExpression(HqlBaseParser.java:861)
    at org.hibernate.hql.antlr.HqlBaseParser.atom(HqlBaseParser.java:3422)
    at org.hibernate.hql.antlr.HqlBaseParser.unaryExpression(HqlBaseParser.java:3200)
    at org.hibernate.hql.antlr.HqlBaseParser.multiplyExpression(HqlBaseParser.java:3082)
    at org.hibernate.hql.antlr.HqlBaseParser.additiveExpression(HqlBaseParser.java:2802)
    at org.hibernate.hql.antlr.HqlBaseParser.concatenation(HqlBaseParser.java:570)
    at org.hibernate.hql.antlr.HqlBaseParser.relationalExpression(HqlBaseParser.java:2586)
    at org.hibernate.hql.antlr.HqlBaseParser.equalityExpression(HqlBaseParser.java:2449)
    at org.hibernate.hql.antlr.HqlBaseParser.negatedExpression(HqlBaseParser.java:2413)
    at org.hibernate.hql.antlr.HqlBaseParser.logicalAndExpression(HqlBaseParser.java:2331)
    at org.hibernate.hql.antlr.HqlBaseParser.logicalOrExpression(HqlBaseParser.java:2296)
    at org.hibernate.hql.antlr.HqlBaseParser.expression(HqlBaseParser.java:2082)
    at org.hibernate.hql.antlr.HqlBaseParser.aliasedExpression(HqlBaseParser.java:2249)
    at org.hibernate.hql.antlr.HqlBaseParser.selectedPropertiesList(HqlBaseParser.java:1455)
    at org.hibernate.hql.antlr.HqlBaseParser.selectClause(HqlBaseParser.java:1365)
    at org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1106)
    at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:702)
    at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
    at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:238)
    ... 33 more

2008年3月20日星期四

给页面加一层半透明div,禁用页面所有功能

系统中有个功能用户点击一个按钮要调用webservice,可能会等待较长时间,如果用户不耐烦,再点按钮或点击别的功能就乱套了
想到屏蔽页面所有功能,思路是用户点击按钮,调用一个javascript方法,显示预先在页面中定义好的隐藏div,返回结果后再隐藏div,允许用户继续操作。



==========================================================

<html>
<head>
    <title>半透明div</title>


   <style>
.#mask {
visibility: hidden;
background-color: #cccccc;
left: 0px;
position: absolute;
top: 0px;
background-image: none;
filter: alpha(opacity :   50);
}

.#dialog {
visibility: hidden;
background-color: #f7fcfe;
z-index: 100;
width: 300px;
height: 50px;
position: absolute;
text-align: center;
font-size: 30px;
color: #FF0000;
font-weight: bold;
vertical-align: middle;
}
</style>



<script language="javaScript">
function show()
{
    var d_mask=document.getElementById('mask');
    var d_dialog = document.getElementById('dialog');


    d_mask.style.width = document.body.clientWidth ;
    d_mask.style.height=document.body.clientHeight;

    //网页正文全文
    //d_mask.style.width = document.body.scrollWidth ;
    //d_mask.style.height=document.body.scrollHeight;


    d_dialog.style.top = document.body.clientHeight / 2 - 60;
    d_dialog.style.left =document.body.clientWidth / 2 -100;

    d_mask.style.visibility='visible';
    d_dialog.style.visibility='visible';

}


function divBlock_event_mousedown()
{
var e, obj, temp;
obj=document.getElementById('dialog');
e=window.event?window.event:e;
obj.startX=e.clientX-obj.offsetLeft;
obj.startY=e.clientY-obj.offsetTop;
document.onmousemove=document_event_mousemove;
temp=document.attachEvent?document.attachEvent('onmouseup',document_event_mouseup):document.addEventListener('mouseup',document_event_mouseup,'');
}


function document_event_mousemove(e)
{
var e, obj;
obj=document.getElementById('dialog');
e=window.event?window.event:e;
with(obj.style){
    position='absolute';
    left=e.clientX-obj.startX+'px';
    top=e.clientY-obj.startY+'px';
    }
}

function document_event_mouseup(e)
{
var temp;
document.onmousemove='';
temp=document.detachEvent?document.detachEvent('onmouseup',document_event_mouseup):document.removeEventListener('mouseup',document_event_mouseup,'');
}


window.onresize = function()
{
    var d_mask=document.getElementById('mask');
    var d_dialog = document.getElementById('dialog');


    d_mask.style.width = document.body.clientWidth ;
    d_mask.style.height=document.body.clientHeight;
}
</script>
</head>
<div id ="mask"></div>
<div id ="dialog" onmousedown="divBlock_event_mousedown()">处理中,请等待……</div>
<body>
    <table border='0' width="100%" height="100%">
        <tr>
            <td>
                测试
            </td>
        </tr>
        <tr>
           <td>
              <input type="button" value="显示div" onclick="show()" />
           </td>
        </tr>
    </table>
</body>
</html>

2008年3月13日星期四

2008年2月20日星期三

公司2008年全年放假安排

2008年,元旦、春节、清明节、国际劳动节、端午节、中秋节、国庆节放假调休日期具体安排如下:

一、元旦:2007年12月30日-2008年1月1日放假,共3天。其中:1月1日(星期二)为法定节假日,12月30日(星期日)为公休日,12月29日(星期六)公休日调至12月31日(星期一),12月29日(星期六)上班。

二、春节:2月6日—12日(即农历除夕至正月初六)放假,共7天。其中,2月6日(除夕)、2月7日(春节)、2月8日(正月初二)为法定节假日,2月9日(星期六)、2月10日(星期日)照常公休,将2月2日(星期六)、2月3日(星期日)两个公休日调至2月11日(星期一)、2月12日(星期二),2月2日(星期六)、2月3日(星期日)上班。

三、清明节:4月4日—6日放假,共3天。其中:4月4日(清明节),为法定节假日,4月5日(星期六)、4月6日(星期日)照常公休。

四、“五一”国际劳动节:5月1日—3日放假,共3天。其中,5月1日为法定节假日,5月3日(星期六)为公休日,5月4日(星期日)公休日调至5月2日(星期五),5月4日(星期日)上班。

五、端午节:6月7日—9日放假,共3天。其中:6月7日(星期六)照常公休,6月8日(农历五月初五,端午节)为法定节假日,6月8日(星期日)公休日调至6月9日(星期一)。

六、中秋节:9月13日—15日放假3天。其中,9月13日(星期六)为公休日;9月14日(农历八月十五,中秋节)为法定节假日,9月14日(星期日)公休日调至9月15日(星期一)。

七、国庆节:9月29日—10月5日放假7天。其中,10月1日、2日、3日,为法定节假日,9月27日(星期六)、9月28日(星期日)两个公休日调至9月29日(星期一)、30日(星期二),9月27日(星期六)、9月28日(星期日)上班,10月4日(星期六)、5日(星期日)照常公休。