Stack Overflow上有很多与此错误相关的问题,我已经尝试过最相关的解决方案而没有成功.这是我的问题.
我正在尝试映射此请求:/user/{userId}其中userId是String.我能够/user使用以下带注释的类和Spring配置来处理GET请求:
UserController.java
@Controller
@RequestMapping("/user")
public class UserController {
private static final Logger log = Logger.getLogger(UserController.class.getName());
@RequestMapping(method=RequestMethod.GET)
public @ResponseBody String info() {
log.debug("mapping succeeded!");
return "<H1>foo</H1>";
}
}
Run Code Online (Sandbox Code Playgroud)
网络/ WEB-INF /用户servlet.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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.example"/>
</beans>
Run Code Online (Sandbox Code Playgroud)
web.xml中
<servlet>
<servlet-name>user</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>user</servlet-name>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
然后我要求 /user
2011-01-14 15:47:41,942 DEBUG [com.example.rest.UserController] (http-11080-1) mapping succeeded!
Run Code Online (Sandbox Code Playgroud)
现在做一些有趣的事情.我将我的代码更改为以下内容:
@Controller
@RequestMapping("/user")
public class …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个复合组件,以便在我的Seam应用程序中使用,并且我遇到了最简单的"hello,world"组件的问题.
我在{jboss deploy} /application.ear/application.war/resources/greet中放置了一个名为hello.xhtml的文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite">
<head>
<title>My First Composite Component</title>
</head>
<body>
<composite:interface>
<composite:attribute name="who"/>
</composite:interface>
<composite:implementation>
<h:outputText value="Hello, #{cc.attrs.who}!"/>
</composite:implementation>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
现在在home.xhtml中,位于我的webapp的根目录({jboss deploy} /application.ear/application.war/home.xhtml):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:g="http://java.sun.com/jsf/composite/greet"
xmlns:s="http://jboss.com/products/seam/taglib"
template="layout/template.xhtml">
<ui:define name="content">
<div id="content">
<g:hello who="World"/>
<br/>
</div>
</ui:define>
</ui:composition>
Run Code Online (Sandbox Code Playgroud)
但是我的"你好,世界"没有显示,我也没有收到任何错误消息,即使我打开com.sun和javax.faces类别的调试级别日志记录.
我已经验证资源目录在适当的位置,因为添加目录resources/images/test.jpg,然后将其添加到home.xhtml:
h:graphicImage value="#{resource['images:test.jpg']}"/>
Run Code Online (Sandbox Code Playgroud)
显示图像的结果.我只是不知道为什么JSF没有从greet目录中获取我的xhtml文件.
有任何想法吗?
我正在使用JBoss 6和Seam,我有一个我试图坚持的实体User.我已经扩展org.jboss.seam.framework.EntityHome为提供一个UserHome类并重写了该persist()方法.我用javax.validation注释彻底注释了我的实体类.当我为实体类中的所有字段提供有效值时,该对象将保持不变.当我违反其中一个验证约束时,持久性会按预期失败.
我遇到的问题是在异步持久化期间违反约束:hibernate没有告诉我哪个约束被违反了!
javax.validation.ConstraintViolationException: validation failed for classes [com.example.model.User] duringpersist time for groups [javax.validation.groups.Default, ]
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:132)
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:71)
Run Code Online (Sandbox Code Playgroud)
如果我通过添加EntityManager.flush()来强制同步持久性UserHome.persist(),那么我可以捕获ConstraintViolationException包含违反约束的输出日志语句.
我的问题:是否可以使用hibernate/jboss注册一个监听器来进行约束违规?我认为hibernate没有打印违规行为有点蹩脚,但希望我可以插入一些代码来捕获并记录它们以获取更多信息.否则我不知道违反了什么约束.
谢谢!
我正在为我的网站设计视图,该网站有一个标准的登录和登录页面,我希望为我的登录页面调用onLoad函数,但不是我的其他页面(尚未).我有一个template.xhtml文件,它有这个插入:
<div id="content">
<ui:insert name="content"/>
</div>
然后在login.xhtml我有:
<ui:define name="content">
...
</ui:define>
通常我会把它放在login.xhtml中:
<body onload="document.getElementById('login_form:name').focus();">
但由于我使用的是JSF的ui组合标签,因此我无法<body/>在login.xhtml中使用该标签(至少我尝试这样做的方式).
有没有办法用我描述的结构来实现这一目标?我想这样做的方法是让onLoad调用模板中的一个函数,然后每个带有ui:define的页面都会填充这个函数.那可能吗?
谢谢!
我正在编写一个脚本来对Java属性文件进行变量替换,格式为name = value.我有一个源文件,source.env是这样的:
TEST_ENV_1=test environment variable one
TEST_ENV_2=http://test.environment.com/one
#this is a comment with an equal sign=blah
TEST_ENV_3=/var/log/test/env/2.log
Run Code Online (Sandbox Code Playgroud)
我的脚本将用"test environment variable one"替换文件dest.env中TEST_ENV_1的每个出现,依此类推.
我正在尝试一次处理一行,并且遇到问题,因为循环输出来自sed或grep等命令的输出会在空白而不是整行上进行标记:
$ for i in `sed '/^ *#/d;s/#.*//' source.env`; do
echo $i
done
TEST_ENV_1=test
environment
variable
one
TEST_ENV_2=http://test.environment.com/one
TEST_ENV_3=/var/log/test/env/2.log
Run Code Online (Sandbox Code Playgroud)
我如何将它们视为线条?我希望能够做的是在"="符号上拆分每一行,并根据source.env文件制作带有一堆替换正则表达式的sed脚本.
在编写执行Java的shell脚本(启动JBoss AS)时,我在过去几天遇到了一个奇怪的问题.我有一个我正在创建的变量JAVA_OPTS,最后传递给'java'命令.当我在JAVA_OPTS中硬编码值而不是使用变量扩展时,java进程正常执行.当我使用变量扩展时,我从java可执行文件中获取错误.以下是脚本的相关部分:
SERVER="-server"
MEM_OPTS="-Xms512m -Xmx1024m"
case "$1" in
start)
java "$SERVER" "$MEM_OPTS" $JAVA_OPTS \
-classpath "${JBOSS_CLASSPATH}" \
-Dorg.jboss.resolver.warning=true \
-Dsun.rmi.dgc.client.gcInterval=3600000 \
-Dsun.rmi.dgc.server.gcInterval=3600000 \
-Djboss.server.name=${SERVICE_NAME} \
-Djboss.server.base.dir=`dirname ${EC_APP_HOME}` \
-Djboss.server.base.url=file://`dirname ${EC_APP_HOME}` \
-Djboss.server.home.dir=${EC_APP_HOME} \
-Djboss.server.home.url=file://${EC_APP_HOME} \
org.jboss.Main >> out.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)
执行此操作会给出以下内容:
Invalid initial heap size: -Xms512m -Xmx1024m
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)
但是,当我删除变量扩展时,如下所示:
java "$SERVER" -Xms512m -Xmx1024m $JAVA_OPTS \
Run Code Online (Sandbox Code Playgroud)
java执行没有问题.顺便说一句,当我在MEM_OPTS var中包含"-server"时,我得到错误"无法识别的选项".
显然,变量扩展存在一些问题.我已经对脚本进行了hexdump,并确保字符串中没有多余的字符,并确认我使用的是Unix行结尾.我也在两台不同的linux机器上重现了这个问题,虽然它们都运行相同版本的ubuntu(一个32位,另一个64位).
编辑:我得到所有形式的变量替换相同的结果:$ MEM_OPTS,$ {MEM_OPTS},"$ {MEM_OPTS}"
有任何想法吗?