小编pur*_*ger的帖子

Spring MVC - 找不到请求URI的映射

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)

java spring controller spring-mvc

7
推荐指数
1
解决办法
1万
查看次数

JSF复合组件

我正在尝试创建一个复合组件,以便在我的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文件.

有任何想法吗?

jsf composite-component

6
推荐指数
1
解决办法
4114
查看次数

实体持久注册验证侦听器

我正在使用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没有打印违规行为有点蹩脚,但希望我可以插入一些代码来捕获并记录它们以获取更多信息.否则我不知道违反了什么约束.

谢谢!

java validation orm hibernate

5
推荐指数
0
解决办法
3275
查看次数

如何在JSF模板中定义将在别处定义的onLoad函数

我正在为我的网站设计视图,该网站有一个标准的登录和登录页面,我希望为我的登录页面调用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 jsf jsp facelets

4
推荐指数
1
解决办法
2万
查看次数

Bash循环 - 在行而不是单词上进行标记

我正在编写一个脚本来对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脚本.

bash scripting sed token

1
推荐指数
1
解决办法
1964
查看次数

Bash变量扩展导致Java命令行中断

在编写执行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}"

有任何想法吗?

java heap size bash

1
推荐指数
1
解决办法
1411
查看次数