刚工作三个月,我写了这些"字"
有一天突然翻到了刚工作三个月时候写下的随笔记录,可谓乱七八糟,但读起来津津有味,似乎每个异常每句话都能想到当初的情节. 呵呵,如今工作一年了,好像丢失了里面的一些东西…..
记下来,仅仅是为了回忆.
配置spring时 遇到异常信息如下:org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'bean'.
把<bean></bean>放在,<beans>之中也会显示说找不到’beans’ 纠结!
我怀疑spring.jar版本不够,后来折腾了半天,都没有找到解决方案,其实原因很简单 真的很简单:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd ">
</beans>把这段代码赋值到beans.xml文件里面就行了 O(∩_∩)O哈哈~
并且<beans>前面不能有空格,不然也会报错滴,
No error no exception is the best beautiful word!
关于前台后台数据交互和跳转页面的问题,是个很严重的问题,怎么做诺
老大说spring可以和 前台交互,怎么个交互法?struct2标签应该也可以吧,但是就是不知道该怎么弄,焦灼着呢 税
在做项目的过程中,虽然还并没有做出自己想要的功能,但我确实学会了不少,总结如下:
一:
一般情况下一个表中的主键,id int identity(1,1)primary key
这是最常见的咯,用注解的形式标记这种主键也很简单
@Id
@GeneratedValue
@Column(name="RecId")
public int getRecId(){
return RecId;
}
相对来说 我还是喜欢感受四季明显的变化,这样更真实!更能察觉时光变迁。
复合主键个人认为用到的很少,呜呜还是碰到了,由于没有经验,东装西摸,浪费了很长时间才把复合主键配好了,并且还出了很多异常,如下所示:
--一裱中可以有多字段成的主
create table EL_TransIdTable(
TableName nvarchar(50) ,
LastTransId nvarchar(15),
Prefix nchar(5),
DomainId nvarchar(10) primary key(TableName,DomainId)
)
其中 TableName 、DomainId两个字段作为此表的主键
在配置中主要分为两个步骤
1 为符合主键,建立一个复合主键类,这个类包括两个字段,(有几个字段组成主键 就包含几个字段 )这个复合主键类实现Serializable接口,有public 无参的构造方法 重写equals 和hashcode方法
2:在实体类里面用idclass标示复合主键类 详情如下:
package com.barcode.Model;
import java.io.Serializable;
public class TableNameDomainIdPK implements Serializable{//实现接口
public TableNameDomainIdPK(){ //有public无参构造方法
}
private String TableName;
private String DomainId;
public String getTableName() {
return TableName;
}
public void setTableName(String tableName) {
TableName = tableName;
}
public String getDomainId() {
return DomainId;
}
public void setDomainId(String domainId) {
DomainId = domainId;
}
@Override
public int hashCode() { //从写hashCode方法和equals方法
final int PRIME = 31;
int result =1;
result=PRIME*result+((TableName==null)?0:TableName.hashCode());
result=PRIME*result+((DomainId==null)?0:DomainId.hashCode());
return result;
}
@Override
public boolean equals(java.lang.Object obj) {
if(this ==obj){
return true;
}
if(null ==obj ){
return false;
}
final TableNameDomainIdPK other=(TableNameDomainIdPK)obj;
if(DomainId==null){
if(other.DomainId!=null){
return false;
}
}else if(!DomainId.equals(other.DomainId)){
return false;
}
if(TableName==null){
if(other.TableName!=null){
return false;
}
}else if (!TableName.equals(other.TableName)){
return false;
}
return true;
}
}
实体类中的配置如下
package com.barcode.Model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table;
@Entity
@Table(name="EL_TransIdTable")
@IdClass(TableNameDomainIdPK.class)
public class EL_TransIdTable implements Serializable {
private String TableName;
private String LastTransId;
private String Prefix;
private String DomainId;
@Id
@Column(name="TableName", nullable = false)
public String getTableName() {
return TableName;
}
public void setTableName(String tableName) {
TableName = tableName;
}
@Column(name="LastTransId")
public String getLastTransId() {
return LastTransId;
}
public void setLastTransId(String lastTransId) {
LastTransId = lastTransId;
}
@Column(name="Prefix")
public String getPrefix() {
return Prefix;
}
public void setPrefix(String prefix) {
Prefix = prefix;
}
@Id
@Column(name="DomainId", nullable = false)
public String getDomainId() {
return DomainId;
}
public void setDomainId(String domainId) {
DomainId = domainId;
}
public void Print_Info(){
System.out.println(this.getDomainId()+this.getLastTransId()+this.getPrefix()+this.getTableName());
}
}
从昨天晚上就一直遇到这个异常:感觉好怪,一条一条的找了很久 还是没有解决:
org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.demo.pojo.Userinfo. Expected:
class java.lang.Integer, got class java.lang.String;
数据库中并没有int类型的字段,为什么会这样?
一字一句的找了一晚上,模模糊糊知道是类型转换为题,终于在今天找到解决方案咯^_-
在DAO层 有这样一个方法
public EL_TransIdTable Find_ById(String name){
return this.hibernateTemplate.get(EL_TransIdTable.class, name);//通domain修改的lastId
}
平时是传给hibernate int类型的id ,现在传给他的是string类型的name 难道他不认识string类型的name?还是给他整容变成int类型了?
public EL_TransIdTable Find_ById(String name){
String hql="select * from EL_TransIdTable el_t where el_t.DomainId='"+name+"'";
String hql="from EL_TransIdTable el_t where el_t.DomainId='"+name+"'";
List list =this.hibernateTemplate.find(hql);
if(list.size()==0){
System.out.println("有此用");
return null;
}else{
EL_TransIdTable el_t=(EL_TransIdTable)list.get(0);
return el_t;
}
}
这样子就不会报上诉异常了。…… ^_-
解决这个异常后,笑容在由心底绽放在脸上的路途中不幸夭折了,控制台又显示了新的异常—一大推!对自己写的本身就稀烂的代码更加怀疑了,
呜呜,就是这个异常-- java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode 我一下午都在逮它,从数据库表中的每个字段,到java中对应的实体类,再到配置文件,一个一个的找,看哪里配错了,泪流满面后,还是没有找到!既然一致的为啥子还说找不到错的字段呢!
Hql语句为啥这么变态,为什么不支持’_’
String hql="select et.tableName,et.lastTransId,et.prefix,et.domainId from EL_TransIdTable et where et.domainId='"+name+"'";
对应表中的字段 第一个字母都是大写的,但是在hql中必须小写。
好像是hql要自己把小写字母转换成大写的,还是他看大写的不顺,只支持小写的呢。?这个最令人费解的问题 真的好神奇!
哦哦—周末咯,晚上和几个朋友去大吃一顿,暂时放下这一推推变态的Exception吧!
开心每一天 ^_-
其实,具体的字段是不用写的,直接这样写就可以了 “from EL_TransIdTable where et.DomainId=’”+name+”’” 这样写就足够了! 2011年7月29日星期五^_-
* hibernate 中 并不识别* 这个标识,不晓得为啥子
String hql="select * from EL_TransIdTable el_t where el_t.DomainId='"+name+"'";
String hql=" from EL_TransIdTable el_t where el_t.DomainId='"+name+"'";*^_*
这两条语句相差是很大的,
List<EL_TransIdTable> list =this.hibernateTemplate.find(hql);
Iterator<EL_TransIdTable> ita = list.iterator();
while(ita.hasNext()){
EL_TransIdTable elt = (EL_TransIdTable) ita.next();
elt.Print_Info();
}
同样执行这段代码,第一条语句会报错 ,错误类型是classcastexception,类型转换的错误,令人恶心!原因是详细写了字段 hibernate并不知道是否查询所有的字段装进实体类里面,他也不认识* 很郁闷把!是的。不知道这样写对不对!反正目前我是这样理解滴,等下次有了新的感悟和认知再来修改吧。学习就是这样,一步一步循序渐进!加油
有时间看这个网页http://archive.cnblogs.com/a/2048890/ net 增删改查 实体类和数据库帮顶
new java.sql.Date(new java.util.Date().getTime())
java中日期处理
String类型的数据转换成Double类型
((Double.parseDouble((String)listbody.get(7))));
百度得知
Double d = Double.parseDouble(string)
几乎每个数字类都有***.parse***(string)方法的
如果String类型的数据像int类型一样去加一
String s = “2000”
Double d = —ouble.paresDouble(s))
d=d+1
System.out.println(d.toString());在把d转换回来就ok啦
虽然可以使原来的数据加1 但是产生了新的问题
------------d的值是:2001.0
------------d的值是:2002.0
------------d的值是:2003.0
这是测试的结果!返回值2001.0 这不是数据库中的int类型,保存数据失败!
泪流满面之后,还得要找别的方法!
啦啦啦啦啦啦啦 ^_-
这样可以 先将String类型的数据转换int类型,然后将int类型加1后在转换成String类型插入数据库中,
是不是还有更好的方法 在插入数据库之前,转换数据类型?
String s=elt.getLastTransId();
Integer i =Integer.valueOf(s);
i = i +1;
String si = i.toString();
elt.setLastTransId(si);
保存数据成功! O~~yeth
学习滴路途是会遇到很多exception滴,加油哈
思考:要不要把类型转换单独写个函数 分个层出来? Biz层?
现在存在的主要问题是:批量修改,和事务管理!基本上上午没做什么正事 ,嘻嘻嘻 下午开干!吃饭咯。^_-
Alter table 表名 with check add constraint FK_主表名_从表名
Foreign key 从表中字段 references 主表中的字段
如果现在有两张表 A 、B 。 A中主键ID B中外键IDA
Alter table B with check add constraint FK_A_B foreign key IDA reference ID
这是我写滴……^_--
额今天似乎什么都没做额!惭愧??~~!~~我有罪,
看了温州事件的相关报道,心真难受,生命就是那么脆弱!经不得其折腾,好好珍惜吧,我们的每天每天!眼睛不知不觉的模糊!》。
修改指定记录:
String hql=”from EL_TransIdTable el_t where el_t.domainId=’”+DomainId+”’
List<EL_TransIdTable>list=this.hibernateTemplate.find(hql);
If(list.size==0){
System.out.println(“没有查出记录!”);
Return null;
}else{
Iterator<EL_TransIdTable>ita = list.iterator();
While(ita.hasNext){
EL_TransIdTable elt=(EL_TransIdTable)ita.next();
Elt.print_Info();
}
}
MM们喜欢哪种IT男?^_-- 相对很多行业 做开发的男生心性是单纯善良的,
差不多可以这样描述 :两耳不闻窗外事,一心只敲编程码 哈哈!你喜欢那种呢
主外键级联删除
就有那么两张表是主外键关系 主表中的级联先存在 子表中的记录先被删除
主表受约束的控制,子表不受
亲,穷疯了吗?还在为活着买不起房,死了买不起墓而烦恼吗?赶紧拿起电话订购一张动车票吧,可免费参与集体火化,还包埋哦,更有机会参加50万现金的抽奖活动呢。前10名获奖者可额外获得5万元的奖金,先到先得,你值得拥有。亲,真的有这么优惠的,信不信由你,反正我是信了。
我拒绝了所有人的青睐 等你一个不确定的未来
总有一天我的谜底会揭开
今天还要浪费一天时间吗?
关于datetime
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),\'-\',\'\'),\' \',\'\'),\':\',\'\')
20040912110608
select CONVERT(varchar(12) , getdate(), 111 )
关于sql时间问题是个非常值得研究的问题,网上有很多关于他的解说,看来掌握他并不是一件很容易滴事情,当然掌握它让人感觉好时尚哇!
select * from EL_PickListTable where UploadDate='2011-07-25 15:02:52.017'--根据上载的时间获取外键RecId做下一步操作
select convert(varchar(5),getdate(),114),convert(varchar(8),getdate(),114),CONVERT(varchar(20),getdate(),120)
相对于很多颜色,我还是偏爱花花绿绿的
不在停留中死亡就是在停留中被开除
关于 spring配置问题:
<context:component-scan base-package=”com.*”/>
//上述 规定所有进行扫描的类,以完成Bean创建和自动依赖注入功能
<mvc:annotation-driven/>
我们必须接受失望,因为他是有限的,我们绝不能失去希望,因为他是无限的!
有些东西弄懂了,就永远懂了,就算痛也只痛一次!值了。
This.columns.add(“ShopID”,{header:”ShopId”,width:100,dataIndex:’shopId’,
Hidden:false,sortable:true,align:”center”});
,url:”ItemMasterManagement/ViewHead.action”
POJO:简单的java对象
关于spring注解http://www.ijser.cn/?p=621
ExtJs中的表格功能甚是强大!堪称强悍!包括:排序、缓存、拖动、隐藏某列、自动显示行号
Web.xml 启用spring容器和spring mvc
<! Spring 服务层的配置文件 >
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<! Spring 容器启动监听器 >
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<! Spring MVC 的Servlet,它将加载WEB-INF/annomvc-servlet.xml 的
配置文件,以启动Spring MVC模块>
<servlet>
<servlet-name>annomvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>annomvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
web.xml 中定义了一个名为 annomvc 的 Spring MVC 模块,按照 Spring MVC 的契约,需要在 WEB-INF/annomvc-servlet.xml 配置文件中定义 Spring MVC 模块的具体配置。annomvc-servlet.xml 的配置内容如下所示:
<! ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 >
<context:component-scan base-package="com.baobaotao.web"/>
<! ②:启动Spring MVC的注解功能,完成请求和注解POJO的映射 >
<bean p:suffix=".jsp"/>
</beans>
因 为 Spring 所有功能都在 Bean 的基础上演化而来,所以必须事先将 Controller 变成 Bean,这是通过在类中标注 @Controller 并在 annomvc-servlet.xml 中启用组件扫描机制来完成的,如 ① 所示。
在 ② 处,配置了一个 AnnotationMethodHandlerAdapter,它负责根据 Bean 中的 Spring MVC 注解对 Bean 进行加工处理,使这些 Bean 变成控制器并映射特定的 URL 请求。
而 ③ 处的工作是定义模型视图名称的解析规则,这里我们使用了 Spring 2.5 的特殊命名空间,即 p 命名空间,它将原先需要通过 <property> 元素配置的内容转化为 <bean> 属性配置,在一定程度上简化了 <bean> 的配置。
一个controller对应多个请求 指定参数来选择执行哪个方法
(个人觉得不错!o(□)o)
@Controller
@RequestMapping("/bbtForum.do") // <—— ① 指定控制器对应URL请求
public class BbtForumController {
@Autowired
private BbtForumService bbtForumService;
// <—— ② 如果URL请求中包括"method=listAllBoard"的参数,由本方法进行处理
@RequestMapping(params = "method=listAllBoard")
public String listAllBoard() {
bbtForumService.getAllBoard();
System.out.println("call listAllBoard method.");
return "listBoard";
}
让请求处理方法处理特定的HTTP请求方法
@Controller
@RequestMapping("/bbtForum.do")
public class BbtForumController {
@RequestMapping(params = "method=createTopic",method = RequestMethod.POST)
public String createTopic(){
System.out.println("call createTopic method.");
return "createTopic";
}
}
这样只有当 /bbtForum.do?method=createTopic 请求以 HTTP POST 方式提交时,createTopic() 方法才会进行处理。
通过这篇文章,我做出了如何通过前台页面访问后台代码,一系列增删改查,现在要学习的是:参数的传输!come on!
入门-?深入^_-
规则:spring在如何给处理方法入参自动赋值以及如何将处理方法返回值转化为ModelAndView中的过程中存在一套潜规则 该规则是啥子哟?
RequestMapping
以后开始厚着脸皮问了,我不会解决
/* 函 updateInfo
* 功能 根用行,更新用修改的,
* 1:用所取行的PK (int)
* 2:用更改的信息 (String)
* */
@SuppressWarnings("unchecked")
@RequestMapping(value="BarCode/updateRefId.action")
public @ResponseBody Map<String,Object> updateInfo(HttpServletRequest request){
Map<String,Object>map=new HashMap<String,Object>();
String s[]= (request.getParameter("recId").split(","));
String refid=request.getParameter("refId");
System.out.println("批量修改后的-------:"+refid);
for(int i=0;i<s.length;i++){
int RecId=Integer.parseInt(s[i]);
System.out.println("批量修改的主---------:"+RecId);
EL_PickListTable elp=this.el_PickListTableService.selectByRecId(RecId);
elp.setRefId(refid);
this.el_PickListTableService.updateInfo(elp);
}
map.put("success",true);
map.put("message","成功更新!");
return map;
}
@ResponseBody----和@RequestMapping相对应,一个请求一个响应。
Insert into ppcPickList values(‘1’,’001’,’001’,’004’,’005’,’6’,’7’,’8’,’9’,’0’,’11’,’12’,’13’,1,’15’,’16’, GETDATE(),’18’,’19’,’20’,’21’,’22’,23,24,’25’,’26’,27,’28’,’29’,30,’31’,31)
下面要做的是上载功能,和前台与后台数据的结合,!有挑战!
ALTER TABLE [dbo].[MP_MASTER_PLAN_FACTORY] ALTER COLUMN [MP_ID] varchar(501) NOT NULL
GO
Hibernate配置version
在要加锁的表中,添加字段version int类型,在实体类中get方法中添加如下注解
@Version 就可以咯 easy!!!
当两个用户同时对一张表进行修改数据的时候,产生下列异常:
java.lang.IllegalArgumentException: Invalid handler method return value: true
先提交的用户,修改了数据库中的数据,并使version加1,后提交的用户没有修改数据库
这个问题有待解决
ExtJS 解读器:分为 arrayreader、jsonreader、xmlreader
其实在java实体类中一定要标记主键!这个是不能缺少的,一个表中可以没有主键,但是在实体类中就会出错呢。这是个很神奇的问题。刚刚做了上载AX系统的记录表,删除和查询,现在遇到的问题有两个,一:保存上载信息记录 二:TransId如何获取
玛丽玛丽红,o(□)o
先看一下structs配置:这是在武汉的时候第一次接触structs
<struts>
<!-- 编码设置 -->
<constant name="struts.i18n.encoding" value="GBK"/>
<!-- 相关配置 -->
<package name="json" extends="json-default">
<action name="extjs"
,reader: new Ext.data.JsonReader({
totalProperty:"total"
,root: "data"
},[{
name:"mouldid"
,type:"string"
},{
name: "mouldname"
,type: "string"
}])
,url:"/GetField/get_head_field.action?field=mouldid"
,remoteSort:true
})
之后displayField 和valueField跟其中的mouldid,mouldname对应!
今天在开始做项目的过程中,真的是纠结要死!本身昨晚上没睡好,精神恍惚着呢,加上项目;老是报错!哎郁闷,后来peter帮忙查,找到是dao层写了个多余的死循环!~~呜呜
崩溃!接着又处理了几个异常。哎关于事件,依然是个很头大的问题慢慢来吧。我不知道我还能——)——多久。
昨天折腾了很久,到快下班的时候peter做出了将更改的记录传递到了后台,接下来的事情就是我做了,恩现在基本上编辑grid单元格后保存到数据库是没问题了,上面的功能是仅仅是针对领料单头!其实领料单头实现这个功能是非常的简单的,因为它只能修改单号,领料单头区域也只有四个字段,只能修改其中的一个字段当然是很简单咯。接下来的领料单行该怎么实现呢?领料单行共有32个字段,其中只有一个是不能编辑的31个都是可以编辑的,如何实现编辑同一行记录后,保存到数据库呢,如何知道同一行grid中哪个单元格被编辑了,怎么动态保存呢?问题依然很棘手!其实才做出了冰山一角!很多细节都没有实现,。额 压力好大。
水瓶座和水瓶座
水瓶座:水瓶座
友情:★★★★
爱情:★★★★
婚姻:★★★
亲情:★★★
在12星座中如果要选到和水瓶座绝配的一对,怕且就是另一个水瓶座啦,因为只有水瓶座才会了解到对方那种异于常人,近乎疯狂的行为和性格,而且彼此对自由、无拘无束的渴望有共鸣,令你们更加亲蜜。
对比其他情侣,你们会平淡一些,似老友多过老公老婆,欠缺热情火花,也时不时会有外遇的倾向,但也互相谅解,始终在一起,对于家庭财务你们不懂控制,钱不是最重要,但因为坚持自己各自要求的物质水平,会带来你们一些失控的情况。
至于性生活,只是你们多种兴趣的其中之一,因此,哪怕有不协调的地方都不会太为意,因为这件事不会影响你们之间的感情。
remoteSort :false /true ooo原来是排序的问题! 费解!
灵感瞬间来了:--- 打开一个网页时先呈现出body区域,然后加载两边的内容最后加载头部的区域,很有动态感的呈现给大家的眼球!无疑是个很不错的方式。额别人都用了
那个下拉框做出来了耶 嘎嘎,
是属性设置错误了,主要是数据库是远程滴还是本地设置反了
var combo_store = new Ext.data.Store({
id:"FrmWarehouseId"
,reader:new Ext.data.JsonReader({
totalProperty:"total"
,root:"records"
},[{name:'frmWarehouse',type:"string"}
,{name:'id',type:"id"}
])
,url:"BarCode/getFrmWarehouse.action"
})
items:[{
xtype:'combo',
name:'frmWarehouse',
fieldLabel:'由仓库',
store:combo_store,//绑定是数据源
mode : 'remote',//设置下拉列表读取数据的模式,local表示本地读取,remote表示远程读取
displayField :'frmWarehouse',//被显示在下拉列表框中的值所对于的字段名,比如本类中省份对应的provice_name
valueField : 'id',//设置数据值对应的字段
forceSelection : true,//是否严格匹配列表中的值,true表示只能输入列表中的值
editable:false,//是否可以编辑
forceSelection : true,//当获取焦点的时候立即选择一个已存在的列表项,与editable:true一起使用,否则无意义
triggerAction : 'all',//单击触发按钮的时候显示全部查询的数据,默认为query,设置all会执行allQuery查询
queryParam :'search_provice',//查询参数,涉及到和后台交互
emptyText:"由"
}
项目一点点接近完善!心里偷偷乐!很期待这个ELBase最终能结个大果实。其实这一个多月来,我一直都遇到一个问题,并且一直没有得到解决,因为我感觉太难了,一直逃避着它—浏览器不兼容性,我喜欢火狐,并一直再用它,一次偶然,我在IE上运行了我做的项目,结果乱七八糟的显示,严重的畸形了。当时,我吓坏了,心想着—妈呀,这一个多月来,不是白做了。因为我知道大部分人还是用IE浏览器的。呜呜 心里那个郁闷啊、悲剧啊、死的心都有了。痛定思痛!本人决定暂时逃避这个问题,我把IE删了。哈哈哈。。。
我总是心虚,即使删了IE,问题还是存在,缓了几天,我鼓起勇气开始解决这个问题了。
人啊人就是这个样子的,总是用放大镜来看待未解决的问题!我静下心来仔细看IE报出的错误,从新设置了一下前台界面的宽度,删除了源码中没有使用的变量,再次运行的时候 ,所有的问题都解决了!真的真的。。感觉自己好时尚啊!TRUE! 我想起了华为打广告的一句台词:没有解决不了的大问题,没有不做的小生意!不同的情景想起这句话给人不同的感触。有木有?有。
浏览器不兼容问题还有一个比较严重滴:
IE浏览器日期显示空白
传说要重写一个函数 如下:API中这样写:---
我 调皮 、捣蛋、 喜欢写错别字。 请你记住:这世界上就这么一个我!
date( Mixed value , [String format] ) : Function
将某个值解析成为一个特定格式的日期。
将某个值解析成为一个特定格式的日期。
参数项:
?value : Mixed
要格式化的值
?format : String
任何有效的日期字符串(默认为“月/日/年”)
返回值:
?Function
日期格式函数
在网上copy了一个函数 如下:
Ext.override(Ext.util.Format, {
date : function (v, format, origformat) {
if (!v) {return ""; }
if (!Ext.isDate(v)) {
if (origformat) {
v = Date.parseDate(v, origformat);
}else { v = new Date(Date.parse(v)); }}
return v.dateFormat(format || "m/d/Y"); },
dateRenderer : function(format, origformat) {
return function(v) {
return Ext.util.Format.date(v, format, origformat); };} });
我把它放进了代码里面,没有用!额,不知道该怎么调用这个重写了的函数
传说IE不支持/ 1990/02/14 就没的正常显示了
刚做了一个最新的测试 好像是什么菲测试 挺著名的
得了41分 在41-50的范围内
结果如下:
别人认为你是一个新鲜的、有活力的、有魅力的、好玩的、讲究实际的、而永远有趣的人;一个经常是群众注意力的焦点,但是你是一个足够平衡的人,不至於因此而昏了头。他们也认为你亲切、和蔼、体贴、能谅解人;一个永远会使人高兴起来并会帮助别人的人。
一个女人要是不幸聪明的什么都懂,那就必须同时懂得怎么伪装成什么都不懂
一个女人要是不幸聪明得什么都懂,那就必须同时懂得怎么伪装成什么都不懂
,store:new Ext.data.Store({
id:"storeMp_item_mas_h"
,reader:new Ext.data.JsonReader({
totalProperty:'total',
successProperty:'success',
idProperty:'id',
root:'records',
messageProperty:'message'
},this.dataRecordMeta)
,fields:this.dataRecordMeta
,url:"BarCode/showEL_PickListLine.action"
,method:"GET"
,remoteSort:false
,pruneModifiedRecords:true
,params:this.getSelectedRowPK()
})
多个对象的传递红色字体为主要操作
,updateColumnFn:function(btn){
var obj=this.getSelectedRowPK(); //获得所选择行PK
var me=this;
var selCount=this.getSelectionModel().getCount();//得的
if(btn=='yes'){
Ext.MessageBox.prompt("更改料",":",function(bt,text){
obj.refId=text; //获得文本框中输入的值
if(bt=='ok'){
Ext.MessageBox.wait("系正在更新,稍後...");
Ext.Ajax.request({
url:"BarCode/updateRefId.action"
,success:me.afterExecuteUpdateRecIdSuccess
,timeout:10000
,scope:this
,params:obj
}); }}); }}
后台如何获取前台传来的多个对象
/* 函数 saveupdate
* 作用 编辑grid单元格后自动保存
* 参数 编辑单元格中的值、对应行主键
* */
@SuppressWarnings("unchecked")
@RequestMapping(value="BarCode/saveupdate.action")
public Map<String,Object>saveupdate(HttpServletRequest request){
Enumeration enu=request.getParameterNames();
Map<String,Object>map=new HashMap<String,Object>();
int RecId = 0;
String refId=null; 多好的一个苗子,终因无人栽培活活的就死了
System.out.println("enu中包含-----"+enu);
String recId=request.getParameter("recId");
System.out.println("前的主是----"+recId);
RecId=Integer.parseInt(recId);
refId=request.getParameter("refId");//直接通过名字获取
System.out.println("前被修改的refId------"+refId);
EL_PickListTable elp=this.el_PickListTableService.selectByRecId(RecId);
elp.setRefId(refId);
this.el_PickListTableService.updateInfo(elp);
map.put("success",true);
map.put("message","保存成功!");
return map;
}
说说我下周的计划:一:实现领料单行区域的修改保存—
二:实现对准数的计算
三:细节问题,光标定位
四:。。。
这句话说的多好:女人要是聪明的什么都懂,那就必须懂得怎么伪装什么都不懂。
问题所在一:如何在gridpanel中添加comboBOx ,comboBox中的数据要从数据库中提取
上周买了三本书1:养生杂志2:特品文学3:知音 这个周末 ---幸福蜗居 睡睡觉 做做饭 看看书 听听音乐 偶尔再补个觉
问题所在二: 如何 在项目首页条码输入框中设置光标位置,光标位置如何设置呢。
现在最重要的是:获得修改当前行主键,当前修改的字段,返回后台做相关处理。修改某个字段保存某个字段这个是目前比较理想的解决方法。那么,如何获取当前修改字段呢?
3Q,是这样的:
问题描述:
当我单击领料单头区域中的某行记录时,对应的领料单行会显示出 所选单头对应的全部单行记录,领料单行区域是可编辑的grid单元格,要求是用户编辑了单元格后,自动保存所修改的内容,问题是:后台如何动态的保存修改的记录?难道修改一个单元格就要更新所有记录吗?。之前项目用.net开发的时候,就是这么处理的。可是现在用java重新写,我觉得还这么写不好,因为一条单行记录对应30多个字段,修改一个字段要更新30多个字段,很不爽,我想法有两个:1 编辑一个单元格后,当光标离开该单元格后,保存修改的单元格内容 2 编辑一条单行(可能修改了多个单元格的内容)当当前行号不属于编辑的行号时,保存编辑行号中所有修改的单元格,。不知道我说的你能听明白吗? 这两个想法不论哪个都是只保存修改了的单元格内容,避免了不必要的操作。
不是修改即保存吗?还需要 var x 吗,因为只有一条存在;
当点击进入某一单元格的时候,执行点击事件,获取当前事件对象(即为当前表格单元),进而获取它的内容;
将内容保存在全局变量中;
当光标离开单元格时,执行保存事件,首先或者当前单元格数值,与之前比较,是否发生变化,如没有变化则不做操作;如果发生变化
则获取其表格主键id,传递后台进行保存。
我刚给刘松涛发了个信息,“你无不无聊 闭嘴”,
他每天都给我发信息,有时候我还在上班,有时候我在午休,也有时候我想睡觉。我真的讨厌这样子打扰别人!我知道我做的很不对,心里也有一点点抱歉。这是我的方式。
这是个令人纠结到死的问题
在gridpanel下添加下拉框,妈妈耶 超难做!祈求快点做出来吧
this.columns.add("RecId",{header:"下拉框",width:40,dataIndex:"recId",editor:new Ext.FormPanel.ComboBox({id:'statusCmb',hiddenName:'',store:com,displayField:'frmWarehouse',valueField:'id',editable:false,mode:'remote',triggerAction:'all'})});// 设置下拉框
2011年9月8日星期四 领料单行区域编辑后立即保存该功能终于实现了。。ooo
删除功能相关的函数:
,deleteRecord: function(){
var selCount=this.getSelectionModel().getCount();//得的
if (selCount==0) {
Ext.Msg.show({
title:'馨提示'
,msg: '要除的.'
,buttons: Ext.Msg.OK
,fn: this.executeDelete
,scope:this
,icon: Ext.MessageBox.WARNING
});
} else {
Ext.Msg.show({
title:'馨提示'
,msg: '定要除?'
,buttons: Ext.Msg.YESNO
,fn: this.executeDelete
,scope:this
,icon: Ext.MessageBox.QUESTION
});
}
}
,executeDelete: function(btn) {
if (btn=='yes') {
this.stopEditing( );
Ext.MessageBox.wait("正在除 稍後...");
Ext.Ajax.request({
url:"BarCode/delete.action"
,success:this.afterExecuteDeleteSuccess
,failure:this.afterExecuteDeleteFailure
,timeout:10000
,scope:this
,params:this.getSelectedRowPK()
});
}
}
,afterExecuteDeleteSuccess: function(response,options) {
Ext.MessageBox.hide();
var resp = Ext.decode(response.responseText);
if (resp.success) {
var selRecords=this.getSelectionModel().getSelections();
this.getStore().remove(selRecords);
Ext.Msg.show({title:'馨提示',msg:'除成功 !',buttons:Ext.Msg.OK,fn:Ext.emptyFn,scope:this,icon:'control-successful-icon'});
}else {
if (resp.message) {
Ext.Msg.show({title:'Error',msg:this.urldecode(resp.message),buttons:Ext.Msg.OK,fn:Ext.emptyFn,scope:this,icon:'control-failed-icon'});
} else {
Ext.Msg.show({title:'Error',msg:'除失,管理.',buttons:Ext.Msg.OK,fn:Ext.emptyFn,scope:this,icon:'control-failed-icon'});
}
}
}
女人如果不幸聪明的什么都懂,那她必须懂得 怎么伪装成什么都不懂
今天开始正式入手smartclient了,刚开始觉得和jquery类似和extjs差不多,后来慢慢觉得smartclient有他的个性和特色,只是界面不太喜欢 黑乎乎的。
<html>
<head>
<title>this is a test !</title>
<SCRIPT>var isomorphicDir="../../isomorphic/";</SCRIPT>
<SCRIPT SRC=../../isomorphic/system/modules/ISC_History.js></SCRIPT>
<SCRIPT SRC=../../isomorphic/system/modules/ISC_Core.js></SCRIPT>
<SCRIPT SRC=../../isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
<SCRIPT SRC=../../isomorphic/system/modules/ISC_Containers.js></SCRIPT>
<SCRIPT SRC=../../isomorphic/system/modules/ISC_Grids.js></SCRIPT>
<SCRIPT SRC=../../isomorphic/system/modules/ISC_Forms.js></SCRIPT>
<SCRIPT SRC=../../isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
<SCRIPT SRC=../../isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
</head>
<body>
<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=5 BORDER=0>
<TR><TD CLASS=pageHeader BGCOLOR=WHITE>按钮的测试</TD>
<TD CLASS=pageHeader ALIGN=RIGHT BGCOLOR=WHITE>so easy!</TD>
</TR></TABLE>
<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR=336666><IMG SRC=images/blank.gif WIDTH=1 HEIGHT=4></TD></TR></TABLE>
<script>
//创建一个按钮单击事件-----
isc.Button.create({
ID:"clickBtn",
left:50,
top:70,
title:"快单击我*_*",
click:"clickBtnClicked()"
})
function clickBtnClicked(){
isc.warn('单击我干嘛!');
}
function clickBtnClick(){
//如何跳转到另一个页面呢
isc.warn('想提交 没那么简单!');
}
isc.ListGrid.create({
ID: "contactsList",
left: 800, top: 50, width: 300,
fields: [
{name:"salutation", title:"Title"},
{name:"firstname", title:"First Name"},
{name:"lastname", title:"Last Name"}
]
})
//在一个form里面创建页面元素
DynamicForm.create({
ID:"pane1",
autoDraw:false,
titleOrientation:"top",
itemChange : function (){
Page.setUnloadMessage("Exiting the page now will lose changes");
},
//-----------------------------------------select 下拉框 date 日期 radioGroup单选框 checkbox 多选框 textArea 文本域 button 按钮-------------------------------------------------
fields:[
{name:"firstName", title:"姓",editorType:"select",valueMap:["王","李","张"]},
{name:"lastName", title:"名"},
{name:"birthday",title:"出生年月日",editorType:"date"},
{name:"followup",title:"性别",editorType:"radioGroup",valueMap:["猛男","靓女"]},
{name:"hobby",title:"爱好",editorType:"checkbox"},{name:"hobby",title:"爬山",editorType:"checkbox"},
{name:"remark",title:"备注",editorType:"textArea",width:250},
{name:"upload",title:"上传图片",editorType:"upload"},
{name:"submit",title:"提 交",editorType:"button",width:50,click:"clickBtnClick()"},
{name:"reset",title:"重 置",editorType:"reset",width:50}
]
});
DynamicForm.create({
ID:"pane2",
autoDraw:false,
titleOrientation:"top",
itemChange : function () {
Page.setUnloadMessage("Exiting the page now will lose changes");
},
fields:[
{name:"手机号码:", title:"手机号码"},
{name:"移动电话", title:"移动电话"},
{name:"联系地址",title:"地址"},
{name:"City",title:"所在城市"}
]
});
DynamicForm.create({
ID:"pane3",
autoDraw:false,
titleOrientation:"top",
itemChange : function (){
Page.setUnloadMessage("Exiting the page now will lose changes");//当用户填写了页面中的内容、关闭该页面的时候,弹出提示框
},
fields:[
{name:"address", title:"家庭住址"},
{name:"city", title:"所在地址"},
{name:"state", title:"婚姻状态"},
{name:"zip", title:"有小孩否"}
]
});
// whenever history is navigated, call this callback
isc.History.registerCallback("historyCallback(id)");
// on page load, restore tabset state
isc.Page.setEvent("load", "restoreTabSetState()");
function restoreTabSetState() {
isc.Log.logWarn("restoring state");
// if we have history state, our callback will fire. Otherwise, we need to inspect the URL
// to see if there's history ID in there - this is what happens when the user bookmarks one
// of the history URLs, closes the browser, opens a new one and then navigates to the bookmark.
if (!isc.History.haveHistoryState()) {
tabSet.jumpToTab(isc.History.getCurrentHistoryId() || 0);
}
}
function historyCallback(id) {
// the id is the tabNum and null is initial state - which is the first tab.
tabSet.jumpToTab(id == null ? 0 : id);
}
TabSet.create({
ID:"tabSet",
top:50,
left:180,
width:600,
height:400,
rememberHistory : true,
jumpToTab : function (tabNum) {
this.noHistory = true;
// convert string to number
this.selectTab(new Number(tabNum));
this.noHistory = false;
},
tabSelected : function (tabNum) {
if (!this.noHistory && isc.Page.isLoaded()) isc.History.addHistoryEntry(tabNum);
},
tabs:[{title:"个人资料", pane:pane1, width:70},
{title:"联系方式", pane:pane2, width:70},
{title:"隐私秘密", pane:pane3, width:70}
]
});
</script>
</body>
</html>
以上这个是本人刚接触smartclient的测试程序
小程序在火狐和IE上运行会有小小的差异,比如上载upload这个功能在火狐上运行只要单击到上载的文本框就会弹出上载的对话框,单击一次即可弹出,但是IE则不一样,他需要单击两次文本框,单击一次按钮即可上载东东咯。哈哈
这一天都没网络,文档读不懂。。。
最常见的一个语法错误是js代码中丢失逗号
这个网址还是不错滴:
http://www.smskb.com 电话预定火车票
execute
boolean execute()
throws SQLException
在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。一些预处理过的语句返回多个结果,execute 方法处理这些复杂的语句,executeQuery 和 executeUpdate 处理形式更简单的语句。
execute 方法返回一个 boolean 值,指示第一个结果的形式。必须调用 getResultSet 或 getUpdateCount 方法获取该结果,必须调用 getMoreResults 获取任何后续结果。
返回:
如果第一个结果是 ResultSet 对象,则返回 true;如果第一个结果是更新计数或者没有结果,则返回 false
抛出:
SQLException - 如果发生数据库访问错误;在关闭的 PreparedStatement 上调用此方法,或者为此方法提供了参数