Java中如果一个类引用另外一个类中的方法,我在其中一个类中定义的静态变量,在另外一个类中有效吗?

比如图中这么写报错 ,然后我删掉345行的static 程序就能跑起来了,静态变量的作用域是整个类,为什么我不能在两个类中定义两组静态变量?,图片说明

3个回答

方法体里面不允许写static,要在外面写

有在方法中给类定义属性的吗?这又不是Python,java没那么随意

static变量必须定义在函数外面,类里面,你写在函数里了。通过 类名.变量名 可以在别的类中调用。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
两个java工程其中一个引用另外一个
工程A想引用工程B的java类的内容,或者说一个工程要引用另外一个工程 怎么配置,,, 我配置了后跑起来,给我报java.lang.NoClassDefFoundError错误 因为我在工程A中引用了工程B的java类,调工程的java类的方法 就报错java.lang.NoClassDefFoundError: com/web/Util [b]问题补充:[/b] 这是两个web工程来的,, [b]问题补充:[/b] 问题还没解决,,,请帮帮我
java中怎么引用自己写的函数
我是一个java新手,写了一段代码,有关:摄氏度和华氏度之间的互相转化 -------------------------------------------------------------------------- package method; import method.HuaShe; public class TestCToFandFToC { public static void main(String[] args){ System.out.println("摄氏 华氏 华氏 摄氏"); for(int i = 1;i <= 10;i++){ double she1 = 40.0; double hua1 = cToF(she1); double hua2 = 120.0; double she2 = fToC(hua2); System.out.println(she1 + " " + hua1 + " " + hua2 + " " + she2); she1 -= 1; hua2 -= 10; } } } //问题:为何出现错误?我import了啊!! ----------------------------------------------------------- 其中cToF和fToC是我另外写的函数,但是没有和上面代码段放在一起,而是新建了一个: ----------------------------------------------------------- ``` package method; public class HuaShe { static double cToF(double c){ double ft = (9.0 / 5) * c + 32; double f = (int)(ft * 100) / 100.0; return f; } //-------------------------------------- static double fToC(double f){ double ct = (f - 32) / (9.0 / 5); double c = (int)(ct * 100) / 100.0; return c; } } ``` ------------------------------------------- 然后运行主函数时 cToF(she1);和fToC(hua2);报错: The method cToF(double) is undefined for the type TestCToFandFToC 为什么会这样??? 谢谢!
java跨文件引用对象可不可能?
注意,这个问题是有一定难度的,不是随便一个二半吊子都能回答的,确定你读懂了这个问题! 设有文件A,其中有一个object姑且叫做A,A在文件中初始化,注意, A运用的前提,不光是被new,还需要进行初始化,例如传入远程设备的地址,通讯模式等等非常繁琐,并且这些参数都是private。 现在要在文件B中引用object A,调用它的方法,请问是否可能? 注意,不要告诉我new一个就好了,new一个出来的不是同一个object, 而是另外一个object,还需要用当初初始化object A进行初始化以后才可以使用! 究竟该如何办到?是否可以办到?
JS中的EL表达式到底是如何引用后台包的?
最近,在开发中遇到一个奇怪的问题,想请教大家帮忙解决。 原来,我们公司在开发一套关于商品的系统,早先的开发人员编写的一个应用程序,有一个商品总览的页面,在此,成为页面1.jsp,这个1.jsp里,用静态include方法添加了1个2.jsp的页面,其中有一段是关于商品信息总览页面的分页的。代码段如下: ``` //上一页 if ('${page}' != '1' && '${page}' != '') { $("#Tools17").toggleClass('Tools17_disable').toggleClass('Tools17'); $("#Tools17").on('click', function() { searchItemByPageNo('${prePage}'); }); } //下一页 if ('${page}' != '${total}') { $("#Tools19").toggleClass('Tools19_disable').toggleClass('Tools19'); $("#Tools19").on('click', function() { searchItemByPageNo('${nextPage}'); }); } //最后一页 if ('${page}' != '${total}' && eval('${total}') > eval('${page}')) { $("#Tools18").toggleClass('Tools18_disable').toggleClass('Tools18'); $("#Tools18").on('click', function() { searchItemByPageNo('${total}'); }); } //第一页 if ('${page}' != '1' && '${page}' != '') { $("#Tools16").toggleClass('Tools16_disable').toggleClass('Tools16'); $("#Tools16").on('click', function() { searchItemByPageNo('1'); }); } ``` 请注意,这个${page}变量,我一直不知道这是引用哪个程序? 问题就在于,后来,我接手了继续根据用户需求开发的工作,我开发了另一个应用程序—商品退货,开发完成后,用户反映,使用我的程序没问题,只是,在退出我的程序,重新回到商品总览的页面的时候,却发现页面虽然显示出来了,只是,动态输入商品货号,原来显示出的信息,都不显示了。 昨天,我仔细地查找了错误,发现当点击完商品总览页面菜单以后,URL跳转到1.jsp,加载了2.jsp后,chrome浏览器F12报错,identifier报错,点击出错的行,跳转到了每个${page}处,这里显示出来这个变量引用了我编写的一个后台分页程序Page.java的地址,并且,连实时运行的SQL语句也暴露在里面。 无奈,以前的开发人员写的程序已经达成JAR包,无法修改,我只好修改自己的Page.java程序,改名为MyPage.java, 同时,把放入session的sessionKey从page,改成pagination. ![图片说明](https://img-ask.csdn.net/upload/201704/20/1492668609_527436.jpg) 然后,我启动程序,结果,当我点击商品总览菜单命令,后台依然报这个错误,只是原来${page}引用的路径从com.xxx.xx.Page@xxx 变成了com.xxx.xx.MyPage@xxx, 我现在想请教大家,究竟这个${page}引用的是什么?从哪里可以找到,为何它引用了另一个package里的程序?如果是重名冲突,我修改了我的类名,为何还是这样? 谢谢!
Java如何实现跨域传参
现在有两个前端项目 在其中一个项目中 使用url引用了另外一个项目的页面, 两个项目共用一个后台 ,后台使用的spring mvc,现在我需要把我登录的用户ID传到 另外一个项目上,使用的session存储的用户信息。但是拿不到,因为两个不是同一个项目请求不同。求解。大神们help me....
myeclipse中如何生成jar文件?恳请帮助!
最近写了一个Java project,在IED中运行时好好地,可是生成jar文件时就不行了,能显示图形界面,但是实际的功能不能运行了,我的项目的结构是这样的(有附件图片):项目名称为ceshi,下面有一个包com.hgl.scan,里面有四个类Executor,ReadFile,Checker,Demo,其中Executor是图形界面类,同时监听按钮的动作,以便执行方法,其中Executor中引用了ReadFile,ReadFile中引用了Checkor和Demo,第三个类Checker中使用到引入的jar包。 另外项目中还引入了好几个jar文件,是通过buildpath引入的,其中我在将项目生成myjar.jar文件的时候发现,myjar.jar文件运行到第二个类ReadFile中的唯一的一个方法method()时,就运行不下去了。请看代码注释部分: [code="java"]public class ReadFile { private URL url = null; private String readstring; private DataInputStream dis; public String strurl; private int flag; private String struser; private String strpass; private String logstate; private Checker checker; private Demo demo; public void method() { //生成jar文件不能正常运行和这下面两句话有关系,要是将消息框语句放在这两句上面就能显示消息框 checker = new Checker(); demo = new Demo(); JOptionPane.showMessageDialog(null,"已进入到mothod内部!", "location", 2);//消息框语句放在这个位置在运行myjar.jar文件时不能显示 。。。。。。。。。。。 }//end of method[/code] myjar.jar不能运行是不是和没能将引入的jar包一起打包到myjar.jar里去有关系呢?像这种引入jar包的Java项目到底该如何打包呢?
struts2的ajax标签中executescripts的问题
我刚开始学习struts2中的ajax部分。立刻遇到一个问题 我先按照书上的例子,写一个页面(test.jsp),上面有1个submit按键,对应1个action,用来刷新div。其中action就是链接到另外一个页面,而页面中就是写了一个alert的警告框,这时如果点击按钮,就会出现对应的警告框,没有问题。 而后我又写一个页面(test1.jsp),里面是一个按钮,并且在此页面中有一段script程序,再点击这个按钮的时候会出现一个警告框,然后将上面说的按钮对应的action的result设置为此页面。也就是说当点击按钮的时候div会显示刚写的页面。但是这时候问题出现了:如果第三个按钮没有设置executescripts=“true”的话会显示页面中的按钮,但是点了没有反应;如果设置了为true的话div就会提示unfinder。请问这是怎么回事呀? 大致代码如下: test.jsp: [code="java"]<div id='show' style="width=200px; height=200px"> <s:form id='form' action='test' method='post' theme="ajax"> <s:submit value="submit" executeScripts="true" targets="show"/> </s:form>[/code] action配置: [code="java"]<action name="test"> <result>/test1.jsp<result> </action>[/code] test1.jsp: [code="java"]<script> function test(){ alert("test"); } </script> <body> <a href="javascript:test();">test</a> </body>[/code] [b]问题补充:[/b] 恩,下面说如果是没有引入jacascript会导致错误,但是为什么设置了executescripts=“true”后还是执行不了js程序呢? [b]问题补充:[/b] 哦。听了下面2L的介绍可能就是这个样子了。 但如果我想用div层引用一个其他包含js程序的页面,而且还可以执行对应的js程序,该怎么办呢?
maven项目导入到Eclipse中红色叹号!
最近看一个开源CMS系统Magnolia。 环境: Ubuntu14,Eclipse4.4 for j2ee,jdk1.6,tomcat6,maven2.2.1 按照文档,写了一个小项目。用maven。在命令行创建的项目结构大概: myProject ----myProject-webapp ----myTemplateModule 下面两个是上面的module。 在命令行中已经clean install成功。 但是导入到Eclipse中myProject-webapp项目的图标上有红色感叹号。 ![CSDN移动问答][1] 网上说是jar引用问题。我在buildpath》library中没有发现有问题的jar啊,也尝试过order and export,sellect all。打开.classpath里面貌似也没有引用什么jar啊。内容如下:.classpath. 另外,myProject项目上还有个红叉,其中的一个文件引用的某个类,Eclipse说找不到,可是我在library中都找到这个类了。 ![CSDN移动问答][2] 后来,我不管这个红色提醒,就把myProject-webapp部署在tomcat上面了。运行错误: 2014-9-4 18:25:42 org.apache.catalina.startup.TldConfig tldScanJar 严重: Exception processing JAR at resource path /home/user/.m2/repository/com/vaadin/vaadin-shared/7.1.7/vaadin-shared-7.1.7.jar in context /myProject-webapp java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:127) at java.util.jar.JarFile.<init>(JarFile.java:136) at java.util.jar.JarFile.<init>(JarFile.java:100) at org.apache.catalina.startup.TldConfig.tldScanJar(TldConfig.java:393) at org.apache.catalina.startup.TldConfig.execute(TldConfig.java:320) at org.apache.catalina.startup.TldConfig.lifecycleEvent(TldConfig.java:688) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4616) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) at org.apache.catalina.core.StandardHost.start(StandardHost.java:822) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) at org.apache.catalina.core.StandardService.start(StandardService.java:525) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2014-9-4 18:25:42 org.apache.catalina.startup.TldConfig tldScanJar 严重: Exception processing JAR at resource path /home/user/.m2/repository/org/jsoup/jsoup/1.6.3/jsoup-1.6.3.jar in context /myProject-webapp ............ ......... **附件:** .classpath <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" output="target/classes" path="src/main/java"> <attributes> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="src" output="target/test-classes" path="src/test/java"> <attributes> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> <attributes> <attribute name="maven.pomderived" value="true"/> <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"> <attributes> <attribute name="owner.project.facets" value="jst.web"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0_45"> <attributes> <attribute name="owner.project.facets" value="java"/> </attributes> </classpathentry> <classpathentry kind="output" path="target/classes"/> </classpath> [1]: http://my.csdn.net/my/album/detail/1784229 [2]: http://my.csdn.net/my/album/detail/1784231
这个page到底是什么?
原来,我们公司在开发一套关于商品的系统,早先的开发人员编写的一个应用程序,有一个商品总览的页面,在此,成为页面1.jsp,这个1.jsp里,用静态include方法添加了1个2.jsp的页面,其中有一段是关于商品信息总览页面的分页的。代码段如下: ``` //上一页 if ('${page}' != '1' && '${page}' != '') { $("#Tools17").toggleClass('Tools17_disable').toggleClass('Tools17'); $("#Tools17").on('click', function() { searchItemByPageNo('${prePage}'); }); } //下一页 if ('${page}' != '${total}') { $("#Tools19").toggleClass('Tools19_disable').toggleClass('Tools19'); $("#Tools19").on('click', function() { searchItemByPageNo('${nextPage}'); }); } //最后一页 if ('${page}' != '${total}' && eval('${total}') > eval('${page}')) { $("#Tools18").toggleClass('Tools18_disable').toggleClass('Tools18'); $("#Tools18").on('click', function() { searchItemByPageNo('${total}'); }); } //第一页 if ('${page}' != '1' && '${page}' != '') { $("#Tools16").toggleClass('Tools16_disable').toggleClass('Tools16'); $("#Tools16").on('click', function() { searchItemByPageNo('1'); }); } ``` 请注意,这个${page}变量,我一直不知道这是引用哪个程序? 问题就在于,后来,我接手了继续根据用户需求开发的工作,我开发了另一个应用程序—商品退货,开发完成后,用户反映,使用我的程序没问题,只是,在退出我的程序,重新回到商品总览的页面的时候,却发现页面虽然显示出来了,只是,动态输入商品货号,原来显示出的信息,都不显示了。 昨天,我仔细地查找了错误,发现当点击完商品总览页面菜单以后,URL跳转到1.jsp,加载了2.jsp后,chrome浏览器F12报错,identifier报错,点击出错的行,跳转到了每个${page}处,这里显示出来这个变量引用了我编写的一个后台分页程序Page.java的地址,并且,连实时运行的SQL语句也暴露在里面。 无奈,以前的开发人员写的程序已经达成JAR包,无法修改,我只好修改自己的Page.java程序,改名为MyPage.java, 同时,把放入session的sessionKey从page,改成pagination. ![图片说明](https://img-ask.csdn.net/upload/201704/20/1492695840_647824.jpg) 然后,我启动程序,结果,当我点击商品总览菜单命令,后台依然报这个错误,只是原来${page}引用的路径从com.xxx.xx.Page@xxx 变成了com.xxx.xx.MyPage@xxx, 我现在想请教大家,究竟这个${page}引用的是什么?从哪里可以找到,为何它引用了另一个package里的程序?如果是重名冲突,我修改了我的类名,为何还是这样? 谢谢!
Jquery EasyUi 的一个问题
小弟最近在学习Jquery EasyUi,目前发现一个问题,不知道如果解决。 目前有两个页面,a.jsp 和 b.jsp 。其中a.jsp中只有一个下拉菜单,用浏览器单独访问a.jsp的时候,是可以正常显示的,请看a.jsp的部分代码: [code="java"] <script type="text/javascript"> jQuery(function($){ $('#cc').combogrid({ panelWidth:450, value:'006', idField:'code', textField:'name', url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',width:60}, {field:'name',title:'Name',width:100}, {field:'addr',title:'Address',width:120}, {field:'col4',title:'Col41',width:100} ]] }); }); </script> <body> 下拉菜单:<select id="cc" name="dept" style="width:450px;"></select> </body> [/code]。 b.jsp中有一个window,window的href为a.jsp,在b.jsp中不能够正常显示a.jsp的下拉菜单,请看b.jsp中的部分代码: [code="java"] <script type="text/javascript"> $(function(){ $('#win').window({ width:600, height:400, href:'a.jsp' }) }); </script> <body> <div id="win" iconCls="icon-save" title="My Window"> Window Content </div> </body> [/code] 小弟查询之后,发现是b.jsp的window在显示a.jsp时,a.jsp中页面加载的时候调用的初始化语句块没有调用成功,具体的没有调用的a.jsp的代码为[code="java"] jQuery(function($){ ........ }) [/code] 不知道为什么会出现这种问题,难道一个页面被另一个页面用href引用之后就不能调用自身的初始化语句块了吗?
spring2.5事务注解
用到的是spring2.5的注解方式配置事务。 在接口中加入@Transactional这个就会报错,否则正常。 配置文件。 [code="java"]<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="db-properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:ignoreUnresolvablePlaceholders="true"> <property name="locations"> <list> <value>classpath:DataBase.properties </value> </list> </property> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- 配置同一个数据源 --> <bean id="daoTemplate" abstract="true" lazy-init="true"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>${db.driver}</value> </property> <property name="url"> <value>${db.url}</value> </property> <property name="username"> <value>${db.username}</value> </property> <property name="password"> <value>${db.password}</value> </property> <property name="initialSize"> <value>${db.pool.initial}</value> </property> <property name="maxActive"> <value>${db.pool.max}</value> </property> <property name="defaultAutoCommit" value="false" /> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" /> <bean id="threadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="2" /> <property name="keepAliveSeconds" value="200" /> <property name="maxPoolSize" value="10" /> <property name="queueCapacity" value="60" /> </bean> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> </bean> </beans>[/code] 接口代码: [code="java"] import javax.jws.WebService; import javax.ws.rs.core.Response; import org.springframework.transaction.annotation.Transactional; import com.sns.bestv.entity.VisFclass; import com.sns.bestv.service.impl.VisFclassServiceImpl.Fclasses; @WebService @Transactional public interface VisFclassService { Response save(VisFclass fclass); Response delete(String app_key,int cid,String groupsids); Response update(VisFclass fclass); Fclasses get(String app_key,int cid); } [/code] 启动时候控制台错误信息: [code="java"] 2009-9-1 20:57:07 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: E:\java\jdk1.6.0_13\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;E:\java\jdk1.6.0_13\jre\bin;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Java\jdk1.6.0_13\BIN;C:\Program Files\Common Files\Adobe\AGL;;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\TortoiseSVN\bin;D:\;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin;d:\Program Files\SSH Secure Shell;C:\Program Files\SSH Communications Security\SSH Secure Shell 2009-9-1 20:57:07 org.apache.coyote.http11.Http11Protocol init 信息: Initializing Coyote HTTP/1.1 on http-8081 2009-9-1 20:57:07 org.apache.catalina.startup.Catalina load 信息: Initialization processed in 763 ms 2009-9-1 20:57:07 org.apache.catalina.core.StandardService start 信息: Starting service Catalina 2009-9-1 20:57:07 org.apache.catalina.core.StandardEngine start 信息: Starting Servlet Engine: Apache Tomcat/6.0.18 log4j:ERROR Parsing error on line 30 and column 23 log4j:ERROR The content of element type "log4j:configuration" must match "(renderer*,appender*,(category|logger)*,root?,categoryFactory?)". 2009-9-1 20:57:08 org.apache.catalina.core.ApplicationContext log 信息: Initializing Spring root WebApplicationContext 20:57:08,359 INFO org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189): Root WebApplicationContext: initialization started 20:57:08,437 INFO org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:411): Refreshing org.springframework.web.context.support.XmlWebApplicationContext@db95a1: display name [Root WebApplicationContext]; startup date [Tue Sep 01 20:57:08 CST 2009]; root of context hierarchy 20:57:08,609 INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:323): Loading XML bean definitions from class path resource [applicationContext.xml] 20:57:08,937 INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:323): Loading XML bean definitions from class path resource [serviceContext.xml] 20:57:09,000 INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:323): Loading XML bean definitions from class path resource [META-INF/cxf/cxf.xml] 20:57:09,046 INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:323): Loading XML bean definitions from class path resource [META-INF/cxf/cxf-extension-soap.xml] 20:57:09,093 INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:323): Loading XML bean definitions from class path resource [META-INF/cxf/cxf-servlet.xml] 20:57:09,187 INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:323): Loading XML bean definitions from class path resource [META-INF/cxf/cxf-extension-jaxrs-binding.xml] 20:57:09,296 INFO org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:426): Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@db95a1]: org.springframework.beans.factory.support.DefaultListableBeanFactory@138847d 20:57:09,671 INFO org.springframework.core.io.support.PropertiesLoaderSupport.loadProperties(PropertiesLoaderSupport.java:178): Loading properties file from class path resource [DataBase.properties] 20:57:10,000 INFO org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:414): Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@138847d: defining beans [db-properties,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,daoTemplate,dataSource,transactionManager,userDao,customerDao,custUserDao,aipUsersDao,aipLogDao,postDao,friendDao,messageDao,fclassDao,userClassDao,customizeDao,threadPoolTaskExecutor,transactionTemplate,cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.cxf.jaxrs.JAXRSBindingFactory,userServices,profileService,postService,friendService,messageService,groupService,custermerService,customizeService,userServices_wa]; root of factory hierarchy 20:57:10,500 INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor.initialize(ThreadPoolTaskExecutor.java:250): Initializing ThreadPoolExecutor 'threadPoolTaskExecutor' 2009-9-1 20:57:12 org.apache.cxf.jaxrs.utils.InjectionUtils reportServerError 严重: Method setMessageContext injection failure 20:57:12,968 INFO org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:421): Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@138847d: defining beans [db-properties,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,daoTemplate,dataSource,transactionManager,userDao,customerDao,custUserDao,aipUsersDao,aipLogDao,postDao,friendDao,messageDao,fclassDao,userClassDao,customizeDao,threadPoolTaskExecutor,transactionTemplate,cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.transport.servlet.ServletTransportFactory,org.apache.cxf.jaxrs.JAXRSBindingFactory,userServices,profileService,postService,friendService,messageService,groupService,custermerService,customizeService,userServices_wa]; root of factory hierarchy 20:57:12,984 INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor.shutdown(ThreadPoolTaskExecutor.java:349): Shutting down ThreadPoolExecutor 'threadPoolTaskExecutor' 20:57:12,984 ERROR org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:215): Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServices_wa': Invocation of init method failed; nested exception is org.apache.cxf.service.factory.ServiceConstructionException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) Caused by: org.apache.cxf.service.factory.ServiceConstructionException at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:112) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) ... 30 more Caused by: javax.ws.rs.WebApplicationException at org.apache.cxf.jaxrs.utils.InjectionUtils.reportServerError(InjectionUtils.java:277) at org.apache.cxf.jaxrs.utils.InjectionUtils.injectThroughMethod(InjectionUtils.java:190) at org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(InjectionUtils.java:656) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactoryBean.java:180) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAXRSServerFactoryBean.java:201) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:81) ... 37 more 2009-9-1 20:57:13 org.apache.catalina.core.StandardContext listenerStart 严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServices_wa': Invocation of init method failed; nested exception is org.apache.cxf.service.factory.ServiceConstructionException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) Caused by: org.apache.cxf.service.factory.ServiceConstructionException at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:112) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) ... 30 more Caused by: javax.ws.rs.WebApplicationException at org.apache.cxf.jaxrs.utils.InjectionUtils.reportServerError(InjectionUtils.java:277) at org.apache.cxf.jaxrs.utils.InjectionUtils.injectThroughMethod(InjectionUtils.java:190) at org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(InjectionUtils.java:656) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactoryBean.java:180) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAXRSServerFactoryBean.java:201) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:81) ... 37 more 2009-9-1 20:57:13 org.apache.catalina.core.StandardContext start 严重: Error listenerStart 2009-9-1 20:57:13 org.apache.catalina.core.StandardContext start 严重: Context [] startup failed due to previous errors 2009-9-1 20:57:13 org.apache.catalina.core.ApplicationContext log 信息: Closing Spring root WebApplicationContext 2009-9-1 20:57:13 org.apache.coyote.http11.Http11Protocol start 信息: Starting Coyote HTTP/1.1 on http-8081 2009-9-1 20:57:13 org.apache.jk.common.ChannelSocket init 信息: JK: ajp13 listening on /0.0.0.0:9009 2009-9-1 20:57:13 org.apache.jk.server.JkMain start 信息: Jk running ID=0 time=0/47 config=null 2009-9-1 20:57:13 org.apache.catalina.startup.Catalina start 信息: Server startup in 6270 ms [/code] [b]问题补充:[/b] 1:@Transactional 不是说用注解就得用接口吗?你说的加到实现类上我也试了一样的错误。 2:[code="java"]<bean id="threadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="2" /> <property name="keepAliveSeconds" value="200" /> <property name="maxPoolSize" value="10" /> <property name="queueCapacity" value="60" /> </bean> [/code] 这是连接池的东西。 3: <!-- 定义切入点,引用事务通知 --> [code="java"]<aop:config proxy-target-class="true"> <aop:advisor advice-ref="txAdvice" pointcut="execution (* com.mobile.dao.*.*(..))"/>[/code] </aop:config> 这种方式我试过了。也会出错。 [b]4:其二,既然你要用注解的方式,那么你就要在你的项目中,加入这两个jar包:aspectjweaver.jar aspectjrt.jar 我好像没加这两个包。我加加试试。[/b] 5:配置文件哪里有问题?如果我不在接口或类上加@Transactional 就是完全正确的运行。 谢谢!请帮忙! [b]问题补充:[/b] [b]再补充:两个包我加了,还是一样的错误。而且那两个包是aop才需要的吧?[/b] [b]问题补充:[/b] [b][color=darkred]yangtao309[/color][/b] 按照你说的把那个多余的连接池delete了。程序不会出错了。 但是不会回滚事务? 那我另问一下:[color=blue]我把@Transactional(readOnly=false) public Response addCustomer(VisCustomer cut) 放在一个接口的实现类的方法上面,那是不是就说我这个方法体都具有一个相同的事务呢?只要其中一个地方出错整个方法都执行失败? 因为我这个方法内不止使用了一个dao的一个方法,有多个方法。比如我现在有 table1,table1-2(关系表),table2 我现在要操作table1,给其insert ,insert之后要向 table1-2中添加一条数据,这时我添加table1-2时出错了,那么我操作table1的数据可以回滚吗? [/color] [b]问题补充:[/b] [b]我添加table1-2时并没有异常,是在数据库中被回滚的,程序中执行是正确的。这样能把它在程序中就回滚了吗?我正在看spring2.5的开发参考手册,其中rollbackForClassname 是定义一组类的名字,必须是Throwable的子类,遇到时必须回滚。如果我产生不了异常不就是说还是回滚不了?[/b] [b]问题补充:[/b] [quote]@Transactional(readOnly=false,rollbackFor = Throwable.class)[/quote] 不能回滚事务。肯定还有地方不对。但是配置我想是没问题了。看了api现在完全按照上面来了。非常非常感谢[color=olive]yangtao309 [/color]
Hibernate 删除记录的问题
应该是一个很简单的问题,下面的代码,无法实现user的删除,在日志输出中,只能看到findById()对应的Select SQL,delete函数对应的SQL看不到,应该是此句没有执行。 另外,如果直接用一个Session去做这些事的话,是可以实现删除的。 原因是什么? 请指教。 代码如下: [code="java"]TbUserDAO userDAO = new TbUserDAO(); TbUser user = userDAO.findById("admin"); userDAO.delete(user);[/code][/code] 其中,TbUser是实体类,TbUserDAO是DAO类,findByID与delelte函数代码如下: [code="java"] public TbUser findById(java.lang.String id) { log.debug("getting TbUser instance with id: " + id); try { TbUser instance = (TbUser) getSession().get( "org.user.model.TbUser", id); return instance; } catch (RuntimeException re) { log.error("get failed", re); throw re; } }[/code] [code="java"] public void delete(TbUser persistentInstance) { log.debug("deleting TbUser instance"); try { getSession().delete(persistentInstance); log.debug("delete successful"); } catch (RuntimeException re) { log.error("delete failed", re); throw re; } }[/code] [b]问题补充:[/b] [code="java"]Transaction tx = HibernateSessionFactory. getSession().beginTransaction(); TbUserDAO userDAO = new TbUserDAO(); TbUser user = userDAO.findById("admin"); userDAO.delete(user); tx.commit();[/code]这样提交以后,仍然没有删除掉该数据.是Session的问题吗? [b]问题补充:[/b] to [Zoran],你的办法不行!仍然没有删除那条记录! [b]问题补充:[/b] to [Zoran] 我这是一个Web项目,用的Struts2+Hibernate+Spring的架构,但是没有用Spring来管理Hibernate.不知道你说的spring声明式事务是什么意思?如果是你所说的问题,具体如何改正与操作. [b]问题补充:[/b] [code="java"] private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; }[/code] HibernateSessionFactory的代码以及实体类的代码都是由MyEclipse的Hibernate插件自动生成的.我觉得这里可能没什么问题.是不是Session的问题,我如果只用一个Session,来做这些查询与删除的话,是没有问题的. [b]问题补充:[/b] to [Zoran], 我没有用Spring来管理Hibernate.Spring的配置如下: applicationContext.xml [code="xml"]<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- <bean id="loginAction" class="org.xtwh.user.action.LoginAction" scope="prototype"> <property name="userService"> <ref bean="userService" /> </property> </bean> --> <bean id="queryTextAction" class="org.xtwh.query.action.QueryTextAction" /> <bean id="queryMainAction" class="org.xtwh.query.action.QueryMainAction" /> <bean id="queryResultAction" class="org.xtwh.query.action.QueryResultAction" /> <bean id="queryResultListAction" class="org.xtwh.query.action.QueryResultListAction" /> <bean id="jsonPluginAction" class="test.JsonPluginAction" /> <bean id="testAction" class="test.TestAction"/> </beans>[/code] [b]问题补充:[/b] to [Zoran] 我没有用Spring来管理Hibernate啊. [b]问题补充:[/b] to [Zoran],没有,这就是我全部的Spring了,我现在对Spring还不怎么了解,我想也不一定要用Spring来做Hibernate的管理吧. 另外,就上面这些代码来说,我觉得没有任何问题啊.为什么不能Delete? [b]问题补充:[/b] 另外,实际是,下面的代码,可以实现我要的删除操作: [code="java"] Session session = HibernateSessionFactory.getSession(); Transaction tx = null; try { tx = session.beginTransaction(); TbUser user = (TbUser)session.load(TbUser.class, "admin"); session.delete(user); } catch(Exception e) { } finally { tx.commit(); session.close(); }[/code] [b]问题补充:[/b] to [yuanyangaas] [quote]你用了spring的代理管理事务,hibernate失效[/quote] 你说的是什么意思?能详细点吗? [b]问题补充:[/b] getSession() 代码如下:它实际上还是调用了HibernateSessionFactory这个类的getSession函数.那个函数我在上面已经帖出来了,应该没有问题. [code="java"]public Session getSession() { return HibernateSessionFactory.getSession(); }[/code] [b]问题补充:[/b] to [all] 问题成功解决.谢谢大家的帮助,下面简单总结一下. 首先要说的是,问题都不像大家列举的那样. 具体原因是在Hibernate启动过程中出现了如下的Error: [code="txt"]ERROR[main](SchemaUpdate.java:155)- org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:155) Unsuccessful: alter table BSK.TB_CANCEL_INFO add constraint FK99DEA302D9E10358 foreign key (ORDERID) references BSK.TB_ORDER ERROR[main](SchemaUpdate.java:156)- org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:156) ORA-02275: 此表中已经存在这样的引用约束条件[/code] 类似这样的Error有9个,主要是由于外键约束引起的.(当时我以为这些错误没有什么影响,就没有在意.) 但是,我的Hibernate的映射是由MyEclipse自带的Hibernate插件自动生成的,不知道为什么会出现这种错误.在网上找了很久,没有找到相关的解决办法. 最后,我将 [code="xml"]<property name="hbm2ddl.auto">update</property>[/code] 改成了: [code="xml"]<property name="hbm2ddl.auto">create</property>[/code] 重新根据映射文件生成数据库,再将"create"改成"update",上面的错误消息. 这样关于数据库更新操作不能执行的问题就解决了. 最后要说的是Hibernate的Session管理方法,一般来说都是ThreadLocal的,所以在一个线程中使用getSession获取到的是同一个Session.
Spring FactoryBean的使用
我碰到一个比较纳闷的问题: 我定义了一个类为: Java code /** * AcegiCacheManagerFactoryBean 负责初始化缓存后生成AcegiCacheManager * 调用 authenticationService 来获取资源和用户实例,并加入UserCache 和 ResourceCache 中 * @author zhanghg * */ public class AcegiCacheManagerFactoryBean implements FactoryBean,InitializingBean { protected final Log logger = LogFactory.getLog(getClass()); private AcegiCacheManager acegiCacheManager; private AuthenticationService authenticationService; private UserCache userCache; private ResourceCache resourceCache; public Object getObject() throws Exception { return this.acegiCacheManager; } @SuppressWarnings("unchecked") public Class getObjectType() { return (this.acegiCacheManager != null ? this.acegiCacheManager.getClass() : AcegiCacheManager.class); } public boolean isSingleton() { return true; } public void afterPropertiesSet() throws Exception { logger.info("Initializing SecurityCacheManager"); Assert.notNull(userCache,"userCache should not be null"); Assert.notNull(resourceCache,"resourceCache should not be null"); Assert.notNull(authenticationService,"Authentication Service should not be null"); //初始化缓存 List<Staff> users =authenticationService.getUsers(); for (Iterator iter = users.iterator(); iter.hasNext();) { UserDetails user = (UserDetails) iter.next(); userCache.putUserInCache(user); } List<Resource> rescs =authenticationService.getResources(); for (Iterator iter = rescs.iterator(); iter.hasNext();) { Resource resc = (Resource) iter.next(); resourceCache.putResourceInCache(resc); } //生成 acegiCacheManager this.acegiCacheManager = new AcegiCacheManager(userCache,resourceCache); } //-------------setters----------- public void setAcegiCacheManager(AcegiCacheManager acegiCacheManager) { this.acegiCacheManager = acegiCacheManager; } @Required public void setAuthenticationService(AuthenticationService authenticationService) { this.authenticationService = authenticationService; } @Required public void setUserCache(UserCache userCache) { this.userCache = userCache; } @Required public void setResourceCache(ResourceCache resourceCache) { this.resourceCache = resourceCache; } } 同时还定义了一个类为: [code=Java] /** * AcegiCacheManager是对缓存进行统一管理,以屏蔽其它类对缓存的直接操作 * 对缓存中的用户和资源进行初始化、增、删、改、清空等操作 * @author zhanghg * */ public class AcegiCacheManager { private UserCache userCache; private ResourceCache resourceCache; //rescTypeMapp 映射资源类型对应的资源的一对多关系,以便快速查找。 //如method类型对应哪些资源实例,url资源类型对应哪些资源实例 private Map<String,List<String>> rescTypeMapping; //-----constructor using fields @SuppressWarnings("unchecked") public AcegiCacheManager(UserCache userCache, ResourceCache resourceCache) { System.out.println("实例化SecurityManager"); this.userCache = userCache; this.resourceCache = resourceCache; // 获取所有的资源,以初始化 rescTypeMapping rescTypeMapping = new HashMap<String,List<String>>(); List<String> resclist = resourceCache.getAllResources(); for (Iterator iter = resclist.iterator(); iter.hasNext();) { String resString = (String) iter.next(); System.out.println("初始化SecurityCacheManager时取得资源信息的path:"+resString); ResourceDetails resc = resourceCache.getResourceFromCache(resString); System.out.println("输出该资源的type类型为:"+resc.getResourceType()); List<String> typelist = rescTypeMapping.get(resc.getResourceType()); if(typelist==null){ typelist = new ArrayList<String>(); rescTypeMapping.put(resc.getResourceType(), typelist); } typelist.add(resString); } System.out.println("输出最终的resTypeMapping信息:"+rescTypeMapping.size()); } //-----get from cache methods public UserDetails getUser(String username) { return userCache.getUserFromCache(username); } public ResourceDetails getResourceFromCache(String resString) { return resourceCache.getResourceFromCache(resString); } //-----remove from cache methods public void removeUser(String username){ userCache.removeUserFromCache(username); } public void removeResource(String resString){ ResourceDetails rd = resourceCache.getResourceFromCache(resString); List<String> typelist = rescTypeMapping.get(rd.getResourceType()); typelist.remove(resString); resourceCache.removeResourceFromCache(resString); } //------add to cache methods public void addUser(String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, GrantedAuthority[] authorities){ User user = new User(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); addUser(user); } public void addUser(UserDetails user){ System.out.println("进来,添加user至缓存"); userCache.putUserInCache(user); } public void addResource(String resourceName,String resString, String resType, GrantedAuthority[] authorities){ Resource rd = new Resource(resourceName,resString, resType, authorities); addResource(rd); } public void addResource(ResourceDetails rd){ List<String> typelist = rescTypeMapping.get(rd.getResourceType()); if(typelist==null){ typelist = new ArrayList<String>(); rescTypeMapping.put(rd.getResourceType(), typelist); } typelist.add(rd.getPath()); resourceCache.putResourceInCache(rd); } // ------renovate cache methods public void renovateUser(String orgUsername, String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, GrantedAuthority[] authorities){ removeUser(orgUsername); addUser(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); } public void renovateUser(String orgUsername, UserDetails user){ removeUser(orgUsername); addUser(user); } public void renovateResource(String resName,String orgResString,String resString, String resType, GrantedAuthority[] authorities ){ removeResource(orgResString); addResource(resName,resString, resType, authorities); } public void renovateResource(String orgResString,ResourceDetails rd){ removeResource(orgResString); addResource(rd); } //-------getters and setters------------------- public void clearResources() { rescTypeMapping = new HashMap<String,List<String>>(); resourceCache.removeAllResources(); } public void setResourceCache(ResourceCache resourceCache) { this.resourceCache = resourceCache; } public void setUserCache(UserCache userCache) { this.userCache = userCache; } /** * 根据资源类型,在rescTypeMapping职工获取所有该类型资源的对应的resource string * @param resType * @return List */ public List<String> getResourcesByType(String resType) { return rescTypeMapping.get(resType); } /** * 获取所有资源的对应的resource string * @return */ public List<String> getAllResources(){ return resourceCache.getAllResources(); } /** * 获取所有用户实例对应的user name * @return */ @SuppressWarnings("unchecked") public List<String> getAllUsers(){ EhCacheBasedUserCache ehUserCache = (EhCacheBasedUserCache)userCache; return ehUserCache.getCache().getKeys(); } } [/code] 同时我的一个类:StaffManager中要用到AcegiCacheManager类 public class StaffManager { // 统一定义所有HQL private static final String QUERY_ADMIN_HQL = "select staff from Staff staff join staff.roles as role where role.roleName=?"; private final Logger logger = LoggerFactory.getLogger(StaffManager.class); //自动装配该bean的属性 @Autowired private StaffDao staffDao; @Autowired private RoleDao roleDao; @Autowired private PrivilegeDao privilegeDao; @Autowired private ResourceDao resourceDao; private AcegiCacheManager acegiCacheManager; 通过@Reqiured进行了注解. 其中我在配置文件配置了bean: <beans:bean id="acegiCacheManager" class="com.sdcncsi.security.cache.manager.AcegiCacheManagerFactoryBean" > 但是为什么staffManager当中,取到的acegiCacheManager老是null呢? 当然通过上下文的getBean("acegiCacheManager")是可以取到这个类的,不是null [b]问题补充:[/b] 楼上的还还是不明白: 如果通过在xml文件中注册bean: <beans:bean id="acegiCacheManager" class="com.sdcncsi.security.cache.manager.AcegiCacheManagerFactoryBean" > 那么我应该在staffManager中怎样写才能取得不为null啊? 而如果我通过@Component("acegiCacheManager")进行注解, 我在staffManager中进行@Autowired,但是为什么提示: Could not autowire field: private com.sdcncsi.security.cache.manager.AcegiCacheManager,com.sdcncsi.service.sys.StaffManager注解错误? 我该 怎样做? 另外factory bean会在服务启动时自动的启动这个bean吗? 而AcegiCacheManager是在AcegiCacheManagerFactoryBean中使用的,但是如果在其它类中我们怎样来引用它,直接注入AcegiCacheManager吗?但是这个类没有默认构造方法,不能实例化. 我现在都晕了,搞的好头大,请各位大人帮忙啊. [b]问题补充:[/b] lovewhzlq说通过这样改定就可以: ------------------------------------------------------------- @Autowired private ResourceDao resourceDao; @Autowired private AcegiCacheManager acegiCacheManager; ----------------------------------------------------------- 我试了后不行: 1)我的配置文件中配置了: <beans:bean id="acegiCacheManager" class="com.sdcncsi.security.cache.manager.AcegiCacheManagerFactoryBean" > 它 是指向工厂类的,这样在启动的时候可以初始化信息. 后来,我把AcegiCacheManagerFactoryBean进行了@Component("acegiCacheManager") 并且在StaffManager中对 AcegiCacheManager acegiCacheManager 启用@Autowired, 提示:Could not autowire field: rror creating bean with name 'acegiCacheManager': FactoryBean which is currently in creation returned null from getObject 我该如何做才对啊?
关于”隐式允许this引用逸出“
在《Java Concurrency in Practice》中,对于发布对象和数据逸出有两种示例, <br />其中之一是: <br />Listing 3.6. Allowing Internal Mutable State to Escape. Don't Do this. <br /><pre name="code" class="java">class UnsafeStates { private String[] states = new String[] { "AK", "AL" ... }; public String[] getStates() { return states; } }</pre> <br /> <br />这个好理解; <br /> <br />另外一个示例是: <br />Listing 3.7. Implicitly Allowing the this Reference to Escape. Don't Do this. <br /> <br /><pre name="code" class="java">public class ThisEscape { public ThisEscape(EventSource source) { source.registerListener( new EventListener() { public void onEvent(Event e) { doSomething(e); } }); } }</pre> <br />作者认为“it implicitly publishes the enclosing ThisEscape instance as well, because inner class instances contain a hidden reference to the enclosing instance.” <br /> <br />作者的改进建议是: <br /> <br />If you are tempted to register an event listener or start a thread from a constructor, you can avoid the improper construction by using a private constructor and a public factory method, as shown in SafeListener in Listing 3.8. <br /> <br />Listing 3.8. Using a Factory Method to Prevent the this Reference from Escaping During Construction. <br /><pre name="code" class="java">public class SafeListener { private final EventListener listener; private SafeListener() { listener = new EventListener() { public void onEvent(Event e) { doSomething(e); } }; } public static SafeListener newInstance(EventSource source) { SafeListener safe = new SafeListener(); source.registerListener(safe.listener); return safe; } }</pre> <br /> <br />作者对于错误的原因是这样解释的: <br />ThisEscape illustrates an important special case of escapewhen the this references escapes during construction. When the inner EventListener instance is published, so is the enclosing ThisEscape instance. But an object is in a predictable, consistent state only after its constructor returns, so publishing an object from within its constructor can publish an incompletely constructed object. This is true even if the publication is the last statement in the constructor. If the this reference escapes during construction, the object is considered not properly constructed. <br />有谁能把这个原因解释清楚点,即:为什么说这是一个未完成的对象呢,一旦内部匿名类那段代码执行完后,对象不就被注册了么?
JavaScript的闭包的相关问题
&nbsp;&nbsp;&nbsp; 最近在学习《JavaScript高级程序设计》,其中关于闭包的两个例子,我照着书中的例子运行时,浏览器不打印也不报错,由于我是初学,才疏学浅,发现似乎是createFunctions()的循环不太对,但也没有调试成功,现在贴出来,还望大家共同讨论,各抒己见。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 下面我把两个例子贴出来,希望有兴趣的朋友能够回复,看看是什么原因造成的: <br />&nbsp;&nbsp;&nbsp;&nbsp; 例子1: <br /><pre name="code" class="java"> &lt;html&gt; &lt;head&gt; &lt;title&gt;对象&lt;/title&gt; &lt;/head&gt; &lt;script type="text/javascript"&gt; function createFunctions(){ var result = new Array(); for(var i=0;i&lt;10;i++){ result[i] = function(){ return i; }; } return result; } var funcs = createFunctions(); //分别输出0、1、2……9 for(var i=0;i&lt;funcs.lenght;i++){ document.write(funcs[i]() + "&lt;br/&gt;"); } &lt;/script&gt; &lt;body&gt; &lt;/body&gt; &lt;/html&gt; </pre> <br /> <br /> <br />例子2: <br /> <br /><pre name="code" class="java"> &lt;html&gt; &lt;head&gt; &lt;title&gt;对象&lt;/title&gt; &lt;/head&gt; &lt;script type="text/javascript"&gt; function createFunctions(){ var result = new Array(); for(var i=0;i&lt;10;i++){ result[i] = function(num){ return function(){ return num; }; }(i); } return result; } var funcs = createFunctions(); //分别输出0、1、2……9 for(var i=0;i&lt;funcs.lenght;i++){ document.write(funcs[i]() + "&lt;br/&gt;"); } &lt;/script&gt; &lt;body&gt; &lt;/body&gt; &lt;/html&gt; </pre> <br /> <br /> <br />&nbsp;&nbsp;&nbsp; 另外,我对闭包的概念理解得也不透彻,不太明白闭包的定义:“闭包是指有权访问另一个函数作用域中的变量的函数:,那么在什么情况下使用闭包呢? <br />&nbsp;&nbsp;&nbsp;&nbsp; 还有匿名函数的销毁,有一个疑问:匿名函数用完后,必须置为null吗?是因为闭包对活动对象的引用造成的吗? <br />&nbsp;&nbsp;&nbsp;&nbsp; 期待同仁赐教,不胜感激。
请教yourgame^_^
yourgame你好, 在你共享的“图书管理系统”中,ViewPort采用了border的布局方式(layout:'border'), 其中viewport中的west部分作为“菜单区”, center部分作为“工作区”, 通过点击左边的某个菜单项,会在工作区内显示对应的操作界面, 同时工作区你采用的是card的布局方式(layout:'card'), 如此,只能够在工作区同一时刻显示一个交易画面(items:[start, p_company, p_user, p_dept, p_duty, p_subject, p_category, p_book, p_simple_book] 中的任意一个), 现在我想将“工作区”修改为tabpanel的布局方式,也就是达到如下效果——点击菜单,在工作区显示对应交易的画面panel, 如下图所以: [img]E:/未命名2.bmp[/img] 我现在遇到的问题是,无法将原来的交易面板放入点击菜单后弹出的对应tabs中去!就像图中所示一样,弹出来的是空白的tabs:( 对“图书管理系统”中 main.js代码的调整如下(你可以直接查找“chg by”字样的地方): Ext.BLANK_IMAGE_URL = 'lib/ext/resources/images/default/s.gif'; Ext.QuickTips.init(); var start = { id : 'start-panel', title : '欢迎使用', layout : 'fit', bodyStyle : 'padding:25px', html : '<img src="images/bg.jpg"/>' }; Ext.onReady(function() { setTimeout(function(){ /* 清除显示加载信息的div标记 */ Ext.get('loading').remove(); /* visible 使要素可以被看见 * hidden 使要素被隐藏 * inherit 指它将继承母体要素的可视性设置。 * 值 inherit 为缺省值。这使单元继承父单元的可见性。所以,如果某一段是隐藏的,则它包含的任何行间单元也都被隐藏。这一继承性可被明确指定的可见性取代。*/ Ext.getDom('header').style.visibility = 'visible'; /* 开始创建界面视图——程序可视区域 * 一个页面上只允许存在一个viewport */ var vp = new Ext.Viewport({ layout : 'border', defaults : { collapsible : true, split : true }, items : [{ xtype : 'box', region : 'north', applyTo : 'header', height : 30, split : false }, { xtype:'panel', title : currentUser, id : 'accordion-panel', layout : 'border', region : 'west', baseCls:'x-plain', margins : '2 0 5 5', width : 200, minSize : 200, maxSize : 250, bodyStyle : 'background-color:#DFE8F6', defaults : { border : false }, bbar : [{ text : '开始', iconCls : 'icon-plugin', menu : new Ext.menu.Menu({ items : [{ text : '关于系统', iconCls : 'icon-info', handler : function() { new Ext.Window({ closeAction : 'close', resizable : false, bodyStyle : 'padding: 7', modal : true, title : '关于本系统', html : '本系统采用目前较为流行的技术实现,<br>前台使用了ExtJs技术,所以实现了跨浏览器<br>' + '本程序在IE6,IE7,FireFox3均测试通过!<br><br>主要技术: Struts2 + Spring2.5 + iBatis2.3 + ExtJs2.2<br><br>' + '数&nbsp;&nbsp;据&nbsp;&nbsp;库: Microsoft SQL Server 2000', width : 300, height : 200 }).show(); } }, { text : '退出系统', iconCls : 'icon-delete', handler : function() { Ext.Msg.confirm('操作提示', '您确定要退出本系统?', function(yorn) { if ('yes' == yorn) { Ext.Ajax.request({ url : 'logout.action', success : function() { location = '/bmsh/index.jsp'; }, failure : function() { Ext.Msg.show({ title : '错误提示', msg : '退出系统失败!', icon : Ext.Msg.ERROR, buttons : Ext.Msg.OK }); } }); } }); } }] }) }], items : [{ layout : 'accordion', region : 'center', items : [{ title : '导航菜单', iconCls : 'icon-nav', border : false, items : [{ xtype : 'treepanel', border : false, rootVisible : false, autoScroll : true, loader : new Ext.tree.TreeLoader({ //根据界面勾选manager的值选择菜单项 dataUrl : nav == 'manager' ? 'js/tree-data-manager.json' : nav =='mine' ?'js/tree-data-mine.json' :'js/tree-data-simple.json' }), root : new Ext.tree.AsyncTreeNode(), listeners : { /* chg by megaecho 20090521 * 用tabPanel布局方式实现 菜单调出 工作区 交易界面 * 'click' : function(n) { try { //如果点击子叶点,则驱动显示相应的交易界面 //如何判定本次点击的node为原有的node呢? 就是不想重新加载页面。 var sn = this.selModel.selNode || {};// 方法:取原选定的node if (n.leaf && n.id != sn.id) { //Ext.Msg.alert("你点击了:"+n.id+"["+n.id.substring(0, n.id.indexOf('-'))+'-panel'+"]"); // 根据选中的菜单拼出panel,并指定载入到ViewPort中id为content-panel的标记 // 也就是将交易界面载入 region=center区域——指定活动items Ext.getCmp('content-panel').layout.setActiveItem(n.id.substring(0, n.id .indexOf('-')) + '-panel'); } } catch (e) { } }*/ 'click' : function(n){ //panel的命名规则:panel+'-panel' var treePanelId = n.id.substring(0, n.id .indexOf('-')) + '-panel'; //检查TabPanel(content-panel)中是否已经打开了id为treePanelId的panel //无,则新建panel并且id为treePanelId var tabTmp = Ext.getCmp('content-panel').getItem(treePanelId); if(tabTmp==null){ alert("新打开"+treePanelId+"panel"); Ext.getCmp('content-panel').add({ xtype:'panel', title: n.text, id:treePanelId, closable:true }).show(); }else{ alert("panel"+treePanelId+"已经被打开,跳回已经打开的panel去"); alert(treePanelId+"has been created....."); Ext.getCmp('content-panel').setActiveTab(tabTmp); } } } }] }] }] }, /* * chg by megaecho 20090521 * 用tabPanel布局方式实现 菜单调出 工作区 交易界面 { id : 'content-panel', region : 'center', layout : 'card', margins : '2 5 5 0', activeItem : 0, border : false, //以下items定义了中间区域包含的交易界面(类),并且按照顺序进行载入 ,默认载入第一个,此处也就是先载入 start items : [start, p_company, p_user, p_dept, p_duty, p_subject, p_category, p_book, p_simple_book] }*/ { title:'操作区域', id:'content-panel', region:'center', xtype:'tabpanel', margins : '0 1 1 0', activeItem : 0, border : false, autoTabs : false, hideCollapseTool :true , items:[start, p_company, p_user, p_dept, p_duty, p_subject, p_category, p_book, p_simple_book] }] }); }, 250); }); 希望这次表述清楚了,并且能得到你的帮助!谢谢! [b]问题补充:[/b] [code="java"] 'click' : function(n){ if( n.leaf ){ var treePanelId = n.id.substring(0, n.id.indexOf('-'))+'-panel'; var tabPanelTmp = Ext.getCmp('content-panel'); var tabTmp = tabPanelTmp.getItem(treePanelId); if(tabTmp==null){ alert("新打开"+treePanelId+"panel"); /* 使用if..elseif 判断菜单对应的交易界面,并调出——成功*/ if( n.id == 'book-manage' ){ tabPanelTmp.add(p_book).show(); }else if( n.id == 'company-manage'){ tabPanelTmp.add(p_company).show(); }else if( n.id == 'dept-manage'){ tabPanelTmp.add(p_dept).show(); }else if( n.id == 'user-manage'){ tabPanelTmp.add(p_user).show(); }else if( n.id == 'duty-manage'){ tabPanelTmp.add(p_duty).show(); }else if( n.id == 'subject-manage'){ tabPanelTmp.add(p_subject).show(); }else if( n.id == 'category-manage'){ tabPanelTmp.add(p_category).show(); } /* [新问题]:将上面if elseif 代替如下,根据传入的节点n得到对应的'p_XXXX'这样的名字, * 以获得对p_XXXX的调用,达到自动使用以后交易的增加..... * 但是执行 tabPanelTmp.add( 'p_'+n.id.substring(0, n.id.indexOf('-')) ).show(); * 却不能得到效果 tabPanelTmp.add( 'p_'+n.id.substring(0, n.id.indexOf('-')) ).show(); */ }else{ alert("panel"+treePanelId+"已经被打开,跳回已经打开的panel去"); Ext.getCmp('content-panel').setActiveTab(tabTmp); } }else{ //alert("非叶节点"); } } [/code] [b]问题补充:[/b] 谢谢issppt的帮助! 更是感谢yourgame,耐心的指导! 问题暂时解决了! 如你所说,我把p_xxxxx这些加入到新增加的panel对应的items参数中就ok了! 但是为了要根据点击菜单来选择对应的p_XXXX,我的做法相对死板 如下: [code="java"] 'click' : function(n){ if( n.leaf ){ var treePanelId = n.id.substring(0, n.id.indexOf('-'))+'-panel'; var tabPanelTmp = Ext.getCmp('content-panel'); var tabTmp = tabPanelTmp.getItem(treePanelId); if(tabTmp==null){ alert("新打开"+treePanelId+"panel"); [b] /* 死板:使用if..elseif 判断菜单对应的交易界面,并调出——成功*/ [/b] if( n.id == 'book-manage' ){ tabPanelTmp.add(p_book).show(); }else if( n.id == 'company-manage'){ tabPanelTmp.add(p_company).show(); }else if( n.id == 'dept-manage'){ tabPanelTmp.add(p_dept).show(); }else if( n.id == 'user-manage'){ tabPanelTmp.add(p_user).show(); }else if( n.id == 'duty-manage'){ tabPanelTmp.add(p_duty).show(); }else if( n.id == 'subject-manage'){ tabPanelTmp.add(p_subject).show(); }else if( n.id == 'category-manage'){ tabPanelTmp.add(p_category).show(); } [b] /* [新问题]:将上面if elseif 代替如下,根据传入的节点n得到对应的'p_XXXX'这样的名字, * 以获得对p_XXXX的调用,达到自动使用以后交易的增加..... * 但是执行 tabPanelTmp.add( 'p_'+n.id.substring(0, n.id.indexOf('-')) ).show(); * 却不能得到效果 tabPanelTmp.add( 'p_'+n.id.substring(0, n.id.indexOf('-')) ).show(); */ [/b] }else{ alert("panel"+treePanelId+"已经被打开,跳回已经打开的panel去"); Ext.getCmp('content-panel').setActiveTab(tabTmp); } }else{ //alert("非叶节点"); } } [/code] [b] 现在想请教如何处理[新问题]? [/b] 我想这个新问题关键还是自己对extjs没有理解所致, 对如下的代码段 的实质 和如何才能 引用未搞清楚!再次求教! [code="java"] var p_book = { title:'图书信息管理', id : 'book-panel', border : false, layout : 'fit', closable:'true', items : [book_panel] } [/code] 另外我通过网上的资料学习,掌握了向TabPanel中动态增加tabs的方法: 1.iframe方式 2.autoLoad方式 3.扩展Panel 资料连接:http://chenxueyong.iteye.com/blog/353371
130 个相见恨晚的超实用网站,一次性分享出来
文末没有公众号,只求 点赞 + 关注 搞学习 知乎:www.zhihu.com 大学资源网:http://www.dxzy163.com/ 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:stu
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱  极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件,   选择安装到U盘(按照操作无需更改) 三、重启进入pe系统   1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12)     选择需要启
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
java源码分析 Arrays.asList()与Collections.unmodifiableList()
举个栗子 本章示例代码来自java编程思想——17.4.1未获支持的操作——Unsupported类。 import java.util.*; public class Unsupported { static void test(String msg, List&lt;String&gt; list) { System.out.println("--- " + msg
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
Java学习笔记(七十二)—— Cookie
概述 会话技术: 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器发送资源请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie,把数据存储到客户端 服务器端会话技术:Session,把数据存储到服务器端 Cookie 概念:客户端会话技术,将数据存储到客户端 快速入门: 使用步骤: 创建C
程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
蓝桥杯知识点汇总:基础知识和常用算法
文章目录JAVA基础语法:算法竞赛常用的JAVA API:基础算法待更: 此系列包含蓝桥杯所考察的绝大部分知识点,一共有基础语法,常用API,基础算法和数据结构,和往年真题四部分,虽然语言以JAVA为主,但算法部分是相通的,C++组的小伙伴也可以看哦。所有文章的链接都会在此公布,还有很多没有更新,会持续更新,如果大佬发现文章有错误的地方请指正,我会十分感谢。另外,有什么问题可私信我~ JAVA基础
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
实现简单的轮播图(单张图片、多张图片)
前言 刚学js没多久,这篇博客就当做记录了,以后还会完善的,希望大佬们多多指点。ps:下面出现的都是直接闪动,没有滑动效果的轮播图。 单张图片的替换 原理 1.将几张图片叠在一起,通过改变"display:block"和"display:none"这两个属性实现替换。 (前提:在css中给所有图片加上display:none属性) 2.不用将图片叠在一起,将一个div当做"窗口",通过"of
强烈推荐10本程序员在家读的书
很遗憾,这个鼠年春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 显示当前目录 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mk
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药
Java与Python学习通法(1)和(2)序言和编程语言发展史怎么学
大家好,我是 jacky 朱元禄,很高兴跟大家一起学习 《Java与Python学习通法系列》。 首先,说一下,我为什么要录这个课; 我们都已经知道Java 和 Python的视频教程和书籍,可以说是非常非常多了,那我录制本系列课的意义是什么呢? (1)课程特色一:我想告诉大家学习编程语言是有捷径的,这个捷径就是 理解技术背后的“哲学逻辑”,或者说是“人文逻辑”,相信你听完 jack
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
阿里架构师花近十年时间整理出来的Java核心知识pdf(Java岗)
由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 整理了一份Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。       欢迎大家加入java学习交流社区  点击加入   可获取文中文档       小编推荐:     
Python基础知识点梳理
python基础知识点梳理 摘要: 本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾。python的详细语法介绍可以查看官方编程手册,也有一些在线网站对python语法进行了比较全面的介绍,比如菜鸟教程: python3 教程|菜鸟教程 为了方便聚焦知识点,本文涉及的操作实例并不多,想学好一门语言关键还得自己多编码多实践。 python语
2020年2月全国程序员工资统计,平均工资13716元
趋势 2020年2月,中国大陆程序员平均工资13716元,比上个月增加。具体趋势如图: 各主要程序员城市工资变化 城市 北京,上海,深圳,杭州,广州四地的工资最高。 city 平均工资 最低工资 中位数 最高工资 招聘人数 百分比 北京 18098 3750 15000 45000 20529 9.53% 深圳 16903 5750 15000 37500 30941 14
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
为什么说程序员做外包没前途?
之前做过不到3个月的外包,2020的第一天就被释放了,2019年还剩1天,我从外包公司离职了。我就谈谈我个人的看法吧。首先我们定义一下什么是有前途 稳定的工作环境 不错的收入 能够在项目中不断提升自己的技能(ps:非技术上的认知也算) 找下家的时候能找到一份工资更高的工作 如果你目前还年轻,但高不成低不就,只有外包offer,那请往下看。 外包公司你应该
基于Python的人脸自动戴口罩系统
目录 1、项目背景 2、页面设计 3、器官识别 4、退出系统 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问