编码时使用log4j级别的最佳做法是什么?我的意思是我们何时使用INFO日志记录,何时使用DEBUG日志记录/ ERROR日志记录等.
我想从会话范围中读取域对象(UserVO).
我在名为WelcomeController的控制器中设置UserVO
@Controller
@RequestMapping("/welcome.htm")
public class WelcomeController {
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(BindingResult result, SessionStatus status,HttpSession session){
User user = loginService.loginUser(loginCredentials);
session.setAttribute("user", user);
return "loginSuccess";
}
}
Run Code Online (Sandbox Code Playgroud)
我能够在jsp页面中使用该对象 <h1>${user.userDetails.firstName}</h1>
但是我无法从另一个Controller中读取值,
我正在尝试读取session属性,如下所示:
@Controller
public class InspectionTypeController {
@RequestMapping(value="/addInspectionType.htm", method = RequestMethod.POST )
public String addInspectionType(InspectionType inspectionType, HttpSession session)
{
User user = (User) session.getAttribute("user");
System.out.println("User: "+ user.getUserDetails().getFirstName);
}
}
Run Code Online (Sandbox Code Playgroud) 在我的java应用程序中,我必须同时处理具有不同模式版本(xsd文件)的XML文件.XML文件的内容在不同版本之间只有一点点变化,因此我想主要使用相同的代码来处理它,并且只是根据所使用的模式的版本来做一些案例distic.
现在我正在使用SAX解析器解析XML文件,我自己ContentHandler忽略了架构版本,只是检查我需要处理的标签是否存在.
我真的很想使用JAXB生成用于解析XML文件的类.这样我就可以从我的java代码中删除所有硬编码字符串(常量),并使用生成的类来处理.
我将模式版本编译为不同的包v1,v2和v3.现在我可以这样创建Unmarshaller:
JAXBContext jc = JAXBContext.newInstance(
v1.Root.class, v2.Root.class, v3.Root.class );
Unmarshaller u = jc.createUnmarshaller();
Run Code Online (Sandbox Code Playgroud)
现在u.unmarshal( xmlInputStream );给我一个Root匹配XML文件架构的包中的类.
接下来,我将尝试定义一个interface访问模式的公共部分.如果您以前做过类似的事情,请告诉我.与此同时,我正在阅读JAXB规范......
我无法让getResourceAsStream找到一个文件.我把文件放在顶级目录,目标目录等等,并在前面尝试了"/".每次返回null.
有什么建议 ?谢谢.
public class T {
public static final void main(String[] args) {
InputStream propertiesIS = T.class.getClassLoader().getResourceAsStream("test.txt");
System.out.println("Break");
}
}
Run Code Online (Sandbox Code Playgroud) 我有两个xml文件定义springframework(版本2.5.x)的bean:
containerBase.xml:
<beans>
<bean id="codebase" class="com.example.CodeBase">
<property name="sourceCodeLocations">
<list>
<value>src/handmade/productive</value>
</list>
</property>
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
......和
containerSpecial.xml:
<beans>
<import resource="containerBase.xml" />
</beans>
Run Code Online (Sandbox Code Playgroud)
现在我想调整财产sourceCodeLocationsbean的codebase范围内containerSpecial.xml.我需要添加第二个值src/generated/productive.
一个简单的方法是覆盖codebasein 的定义containerSpecial.xml并添加两个值,一个来自containerBase.xml和新的:
containerSpecial.xml:
<beans>
<import resource="containerBase.xml" />
<bean id="codebase" class="com.example.CodeBase">
<property name="sourceCodeLocations">
<list>
<value>src/handmade/productive</value>
<value>src/generated/productive</value>
</list>
</property>
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
有没有办法扩展列表而不重新定义bean?
编辑2009-10-06:
这样做的目的是拥有一个containerBase由许多不同项目使用的共享标准容器.每个项目都可以覆盖/扩展一些特定于该项目的属性containerSpecial.如果项目没有覆盖,则使用中定义的默认值containerBase.
在DB2(版本9.5)上的SQL语句
SELECT o.Id FROM Table1 o, Table2 x WHERE [...] FOR UPDATE WITH RR
Run Code Online (Sandbox Code Playgroud)
给我错误消息SQLSTATE=42829(不允许FOR UPDATE子句,因为无法修改游标指定的表).
我需要指定WITH RR,因为我在隔离级别上运行READ_COMMITTED,但我需要阻止我的查询,而另一个进程运行相同的查询.
如果我改为这样查询:
SELECT t.Id FROM Table t WHERE t.Id IN (
SELECT o.Id FROM Table1 o, Table2 x WHERE [...]
) FOR UPDATE WITH RR
Run Code Online (Sandbox Code Playgroud)
一切正常.
但是现在,当多个进程同时执行此查询时,我偶尔会遇到死锁异常.
有没有办法在FOR UPDATE不引入可能发生死锁的地方的情况下制定查询?
在freemarker模板中,我想将布尔变量扩展为类似的字符串:
<#assign booleanVar = "test".isEmpty() />
state: ${booleanVar} <#-- this throws an exception! -->
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出:
state: false
Run Code Online (Sandbox Code Playgroud)
我现在发现达到这个目标的唯一方法是:
state: <#if booleanVar>true<#else>false</#if>
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?
我们希望在Java EE应用服务器(JBoss 4.2.3)中提供一些客户端请求.我读到Java EE规范不允许从企业bean打开套接字.但该规范表明没有其他选择.
具体来说,企业bean不应该:
- 监听,接受网络套接字上的连接或多播
所以问题是:我可以做什么来从应用服务器中提供一些基于二进制 tcp的协议(而不是http)?
当我尝试针对Java中的XSD验证XML文件时(请参阅此示例),XSD文件中给出的正则表达式与java中的正则表达式之间存在一些不兼容性.
如果有一个像"[ab-]"XSD中的正则表达式(意思是任何字符"a","b"或" - ",则java会抱怨表达式中存在语法错误.
这是自2005年3月28日以来的已知错误,请参阅Sun bug数据库.
我该怎么做才能解决这个错误?到目前为止,我尝试通过替换"[ab-]"by 来"纠正"XSD文件"[ab\-]",但有时这不是一个选项.
如果你也遇到这个bug的问题,请在Sun bug数据库中投票!