2008年8月24日
一、el
var el =
Ext.get('例如:formname');
var map = new
Ext.KeyMap(el, {
key:
Ext.EventObject.
ENTER,
fn: function(){
event.keyCode=9;
}
});
二、EditGrid,需修改源码
onEditorKey:function (F, E) {
var C = E.getKey(), G, D = this.grid, B = D.activeEditor;
var A = E.shiftKey;
if (C == E.TAB) {
E.stopEvent();
B.completeEdit();
if (A) {
G = D.walkCells(B.row, B.col - 1, -1, this.acceptsNav, this);
} else {
G = D.walkCells(B.row, B.col + 1, 1, this.acceptsNav, this);
}
} else {
if (C == E.ENTER) {
E.stopEvent();
B.completeEdit();
if (this.moveEditorOnEnter !== false) {
if (A) {
//G
= D.walkCells(B.row - 1, B.col, -1, this.acceptsNav,this)
G = D.walkCells(B.row, B.col - 1, -1, this.acceptsNav, this);
} else {
// G
= D.walkCells(B.row + 1, B.col, 1, this.acceptsNav,this)
G = D.walkCells(B.row, B.col + 1, 1, this.acceptsNav, this);
}
}
} else {
if (C == E.ESC) {
B.cancelEdit();
}
}
}
if (G) {
D.startEditing(G[0], G[1]);
}
}
posted @
2008-08-24 12:14 jinn 阅读(2692) |
评论 (4) |
编辑 收藏
2008年7月18日
摘要: Webservice交互中需要双方约定数据格式,用XML表示数据库记录是不错的选择。
先定义个DTD:
<!--
DTD for the Xml-Format-String used to transmit business data
-->
<!-- The "DBSET" element is the root of...
阅读全文
posted @
2008-07-18 15:13 jinn 阅读(2038) |
评论 (1) |
编辑 收藏
Webservice交互经常需要验证用户,用户名和密码的传递采用SOAPHeader传递不失为一种好办法。在Axis1中设置很简单:
客户端:
((org.apache.axis.client.Call) call).addHeader(new SOAPHeaderElement("Authorization","username",username));
((org.apache.axis.client.Call) call).addHeader(new SOAPHeaderElement("Authorization","password",password));
经包装后传递的内容如下
<soapenv:Header>
<ns1:username
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0" xsi:type="soapenc:string"
xmlns:ns1="Authorization"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
admin
</ns1:username>
<ns2:password
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0" xsi:type="soapenc:string"
xmlns:ns2="Authorization"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
1
</ns2:password>
</soapenv:Header>
服务端通过Handler取得用户名和密码进行验证:
username = (String) messageContext.getRequestMessage().getSOAPEnvelope()
.getHeaderByName("Authorization","username").getValue();
password = (String) messageContext.getRequestMessage().getSOAPEnvelope()
.getHeaderByName("Authorization","password").getValue();
如果觉得这样不安全,可双方约定一种加密解密规则,将用户名和密码加密后进行传输。
我曾试过使用如下方法,
客户端:
((org.apache.axis.client.Call) call).setUsername(username);
((org.apache.axis.client.Call) call).setPassword(password);
包装后传递内容(多了最后一句:Authorization: Basic emphZG1pbjox。Axis将用户名和密码经Base64加密后传递):
POST /web/services/GenericServer HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: localhost:8083
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 807
Authorization: Basic emphZG1pbjox
服务端的Handle:
username =messageContext.getUsername();
password = messageContext.getPassword();
这样是没问题,看起来更简单。可惜调用部署在weblogic上的ws时,会被weblogic拦截,必须在weblogic安全域中配置相应的用户才能通过验证,这不是我们所需要的,通常我们有自己的用户管理机制,调用WS的用户也作为系统中的一个用户纳入我们的管理,而不是跟weblogic安全域用户绑在一起。
posted @
2008-07-18 13:18 jinn 阅读(5912) |
评论 (1) |
编辑 收藏
摘要: Jacob的下载、配置就不说了,提醒下,官方的提供的17版本似乎不支持jdk1.5,得下载19版的(CSDN上有)。
研究这个的目的是想用java生成符合格式的word文档,文档内容大体上有三种格式,Heading1、Heading2和Normal,在word的文档结构图显示的样子如下
Heading 1
Heading 2
H...
阅读全文
posted @
2008-07-18 11:21 jinn 阅读(4631) |
评论 (4) |
编辑 收藏
2006年12月15日
alphal 内部测试版
beta 外部测试版
demo 演示版
Enhance 增强版或者加强版 属于正式版
Free 自由版
Full version 完全版 属于正式版
shareware 共享版
Release 发行版 有时间限制
Upgrade 升级版
Retail 零售版
Cardware 属共享软件的一种,只要给作者回复一封电邮或明信片即可。(有的作者并由此提供注册码等),目前这种形式已不多见。
Plus 属增强版,不过这种大部分是在程序界面及多媒体功能上增强。
Preview 预览版
Corporation & Enterprise 企业版
Standard 标准版
Mini 迷你版也叫精简版只有最基本的功能
Premium -- 贵价版
Professional -- 专业版
Express -- 特别版
Deluxe -- 豪华版
Regged -- 已注册版
CN -- 简体中文版
CHT -- 繁体中文版
EN -- 英文版
Multilanguage -- 多语言版
posted @
2006-12-15 18:56 jinn 阅读(428) |
评论 (2) |
编辑 收藏
2006年12月4日
static:用来修饰字段和方法。
通常情况下,我们通过创建类的对象来访问其字段和方法,而将字段或方法声明为static意味着这个字段或方法作为整个类而不是类的某个特定对象而存在,可以通过类名直接引用它们。
一个static字段对每个类来说都只有一份存储空间,而非static字段则是对每个对象有一份存储空间。
static方法的一个重要用法就是不用创建对象而通过类直接引用它。
final:用来修饰字段、方法和类。
final修饰字段。对于基本类型,final使数值恒定不变,而对于对象引用,final使引用恒定不变,一旦引用被初始化指向一个对象,就无法把它改为指向另一个对象,然而,对象其本身是可以被修改的。
一个既是static又是final的字段只占据一段不能改变的存储空间。
带有恒定初始值(即,编译时常量)的static final基本类型全用大写字母命名,并且字与字之间用下划线隔开。
空白final是指声明为final但又未给定初值的字段,这个字段在运行时初始化,并在以后保持恒定不变。
final参数意味着你无法在方法中更改参数引用所指向的对象,你可以引用参数,但无法改变它。
final修饰方法。使用final方法的原因有两个,第一个原因是把方法锁定,以防任何继承类来修改它的含义。这个出于设计的考虑:想要保证在继承中使方法行为保持不变,并且不会被覆盖。
使用final方法的第二个原因是效率。如果将一个方法指定为final,就是同意编译器将针对改方法的所有调用都转为内嵌调用,而编译器会根据开销情况明智的抉择是否对final方法执行内嵌调用。
类中的所有private方法都隐式的指定为final的。
final修饰类。将某个类定义为final表明该类不能被继承。
final类的字段可以根据个人的意愿选择是或不是final,不论类是否定义为final,相同的规则都适用与final字段。
而final类的所有方法都隐式的指定为final的。
posted @
2006-12-04 01:22 jinn 阅读(682) |
评论 (0) |
编辑 收藏
2006年12月1日
public、protected和private做为java访问权限修饰词而使用。
首先要明白,java中的每个定义(定义类、字段和方法)都有特定的访问权限。如果不加修饰词,则默认为包访问权限,即包内的类对其有访问权限。
对于类成员(字段和方法)的访问权限来说,
public:所有类都可访问。
protected:继承访问权限。基类通过protected把访问权限赋予派生类而不是所有类,
另外,protected也提供包访问权限,也就是说,相同包内的其他类可以访问protected元素。
private:除了包含这个成员的类外,其他任何类都无法访问这个成员。
对于类访问权限来说,
仅有两个选择:包访问权限或public。
类既不可以是private的,也不可以是protected的,但内部类是个特例,一个内部类可以是private或protected的。
posted @
2006-12-01 00:26 jinn 阅读(5553) |
评论 (0) |
编辑 收藏
2006年11月30日
class:用class关键字创建新的类,例如:
class
AClassName
{
/**/
/*
Class body goes here
*/
}
修饰class的词有public,abstract和final,其中abstract和final不能同时修饰class。内部类还可以用private或protected来修饰class。
可以在类中设置两种类型的元素:字段和方法,统称为类的成员。
类、源文件以及编译后文件:一个java源代码文件(通常被称为编译单元)内可以有一个且只能有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件的后缀名:.java)。当编译一个.java文件时,在.java文件中的每个类都会有一个跟类名相同的.class输出文件。
虽然不是很常用,但编译单元内完全没有public类也是可能的,在这种情况下可以随意为文件命名。
package:为了唯一标识每个类并分组,java使用了package的概念。同时,将逻辑上相关的类放在同一个包中,可以使程序结构更为清楚。你要做的就是在java文件开头加一行
package
mypackage ;
注意package 语句必须是文件中的第一行非注释的程序代码。
按照惯例,package名称的第一部分为类创建者的Internet域名的倒序,这样有利于包名的唯一性。
无论何时创建包,在指定包的名称的同时隐含的指定了目录结构。
注意包没有嵌套或包含关系,a包和a.b包对java命令来说是并列的两个包。
import: 用import关键字导入程序库,使之成为可用的单元。
java.lang包中的类是默认导入的。
在一个类中使用其他包的类时可以用全称来指定,如java.util.ArrayList(这样就不用import语句了),也可以仅指定为ArrayList(缘于import)。
posted @
2006-11-30 00:27 jinn 阅读(2358) |
评论 (0) |
编辑 收藏
2006年11月29日
<<Java Language Specification>>列出了java关键字、保留关键字,
并举例说明true,false和null都不是java的keywords,而是literals ,尽管他们看起来很像是keywords。
3.9 Keywords
The following character sequences, formed from ASCII letters, are reserved for use as keywords and cannot be used as identifiers (§3.8):
Keyword: one of
abstract default if private this
boolean do implements protected throw
break double import public throws
byte else instanceof return transient
case extends int short try
catch final interface static void
char finally long strictfp volatile
class float native super while
const for new switch
continue goto package synchronized
The keywords const
and goto
are reserved, even though they are not currently used. This may allow a Java compiler to produce better error messages if these C++ keywords incorrectly appear in programs.
While true
and false
might appear to be keywords, they are technically Boolean literals (§3.10.3). Similarly, while null
might appear to be a keyword, it is technically the null literal (§3.10.7).
3.10 Literals
A literal is the source code representation of a value of a primitive type (§4.2), the String
type (§4.3.3), or the null type (§4.1):
Literal:
IntegerLiteral
FloatingPointLiteral
BooleanLiteral
CharacterLiteral
StringLiteral
NullLiteral
posted @
2006-11-29 23:57 jinn 阅读(2176) |
评论 (0) |
编辑 收藏