我正在使用Spring-boot,因此在Tomcat 7中部署了一场战争.当我启动应用程序时,我得到以下内容:
Dec 30, 2013 7:41:06 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcherServlet'
2013-12-30 19:41:06 INFO DispatcherServlet:461 - FrameworkServlet 'dispatcherServlet': initialization started
2013-12-30 19:41:06 INFO SimpleUrlHandlerMapping:315 - Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2013-12-30 19:41:06 INFO RequestMappingHandlerMapping:181 - Mapped "{[/user],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public com.cloudfordev.controlpanel.orm.User com.cloudfordev.controlpanel.GetController.getUser(int)
2013-12-30 19:41:07 INFO SimpleUrlHandlerMapping:315 - Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2013-12-30 19:41:07 INFO SimpleUrlHandlerMapping:315 - Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2013-12-30 …Run Code Online (Sandbox Code Playgroud) 我有一个jQuery UI Autocomplete工作正常,如果返回的json对象如下所示:
label:name
value:name
Run Code Online (Sandbox Code Playgroud)
然后它搜索myname,当用户选择一个时,它会用myname填充输入框.
但我想要的是json对象看起来像这样:
label:name
value:id
Run Code Online (Sandbox Code Playgroud)
当我这样做时,自动完成功能使用id号而不是名称字符串填充输入框.
如何让自动完成功能将显示的文本设置为名称,并将隐藏值设置为值?
在官方文档中我没有看到任何方法.
这是我的自动完成功能:
$("#eventAccount").autocomplete({
minLength: 2,
source: function (request, response) {
var term = request.term;
if (term in cache) {
response(cache[term]);
return;
}
request.e = "getMyAccountAutocomplete";
$.getJSON("/admin/ajaxController.php", request, function (data, status, xhr) {
cache[term] = data;
response(data);
});
}
});
Run Code Online (Sandbox Code Playgroud)
而它正在回归的JSON:
[{"label":"My fancy name","value":"229"}]
Run Code Online (Sandbox Code Playgroud) 我回来了以下JSON:
{"array":[],"object":null,"bool":false}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下看似详尽的if语句对其进行测试:
$.ajax({
type: "GET",
url: "/ajax/rest/siteService/list",
dataType: "json",
success: function (response) {
var siteArray = response.array;
// Handle the case where the user may not belong to any groups
if (siteArray === null || siteArray=== undefined || siteArray=== '' || siteArray.length === 0) {
window.alert('hi');
}
}
});
Run Code Online (Sandbox Code Playgroud)
但警报没有解雇.:[
我的问题的根源是我有一个方法来处理JDBC查询并在查询后释放所有连接."ResultSet"被传递回调用方法.
我发现我不能简单地将ResultSet传递回调用方法,因为关闭了ResultSet,然后任何使用它的尝试都会产生一个已经关闭的错误.
因此,在关闭资源之前,我遍历ResultSet并将其存储在ArrayList中.
因为该方法处理任何查询,我不知道返回什么类型的类型.因此,ArrayList存储通用s.
这适用于一个表中的一个字段...在一个数据库中,即Integer []字段.
我从那里得到的是一个JDBC4Array对象,我有一段时间将它传递给Integer []以存储在ArrayList中.我确实需要它是一个Integer [].
这就是我现在所拥有的......经过很多挫败的banjaxxing之后.
在循环连接ResultSet之前,在连接关闭之前,我这样做:
// For every row in the ResultSet
while (rs.next()) {
// Initialize a ITILRow for this ResultSet row
ITILRow row = new ITILRow();
// For each column in this row, add that object to the ITILRow
for (int colNum=1; colNum<=numCols; colNum++) {
Object o = rs.getObject(colNum);
// JDBC4Array is a real pain in the butt
ArrayList<Integer> tmpList = new ArrayList<Integer>();
if (o != null) {
if (o.getClass().getSimpleName().endsWith("Array")) {
// …Run Code Online (Sandbox Code Playgroud) 我很喜欢这个,而且 - 虽然我学到了很多 - 但开始绝望了.
我已经尝试过关于这个优秀问题的所有建议:
我曾经使用无处不在的HibernateUtil类在某一点上工作,但被告知要转到普通的JPA样式:
不幸的是,我无法让bean注入在spring-boot中正常工作.这是我的尝试:
Spring JPA(Hibernate)没有类型的限定bean:javax.persistence.EntityManagerFactory
经过这条路径的大量工作后,我最终得到了一个空实体管理器.我发现了这一点并开始认为它不起作用:
在Tomcat 6中使用JPA2:@PersitenceContext不起作用,EntityManager为null
在我看来,EntityManagerFactory绝对应该是spring-boot创建的任何上下文中的bean,但是......无论如何.我认为至少这会起作用:
申请发布:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
控制器:
@Controller
public class GetController {
private static final String PERSISTENCE_UNIT_NAME = "cpJpaPu";
@RequestMapping(value = "/user", method = RequestMethod.GET)
public @ResponseBody User getUser(@RequestParam(value="id", required=true) int id) {
User user = null;
EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager em = emf.createEntityManager();
UserDAO userDao = new UserDAO();
userDao.setEntityManager(em); …Run Code Online (Sandbox Code Playgroud) 在Chrome中,它会像它应该的那样执行HTTP PUT,但在FireFox 21中却没有.javascript控制台或后端没有错误.
这是HTML:
<div id="createTeamModal" class="small reveal-modal">
<form id="createTeamForm">
<div class="row"><p id="teamFlavorText" class="lead">Building a new team</p></div>
<div class="row">
<div class="small-4 large-4 columns"><label>Team Name:</label></div>
<div class="small-6 large-6 columns"><input name="teamName" id="teamName" type="text" size="20"/></div>
</div>
<div class="row"><p class="lead">Does this team work for a business?</p></div>
<div class="row">
<div class="small-4 large-4 columns"><label>Business Size:</label></div>
<div class="small-6 large-6 columns">
<select id="businessSizeSelect" name="businessSizeSelect">
<option value="1">Nope, I work alone</option><option value="2">2 to 49</option><option value="3">50 to 99</option><option value="4">100 to 999</option><option value="5">1,000+</option>
</select>
</div>
</div>
<div id="businessLocationDiv" class="row" style="display: none; margin-top: …Run Code Online (Sandbox Code Playgroud) 我得到以下堆栈跟踪...
java.lang.ClassNotFoundException: org.hibernate.service.jndi.JndiException
java.net.URLClassLoader$1.run(Unknown Source)
java.net.URLClassLoader$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(Unknown Source)
org.springframework.boot.loader.LaunchedURLClassLoader.findClass(LaunchedURLClassLoader.java:148)
java.lang.ClassLoader.loadClass(Unknown Source)
org.springframework.boot.loader.LaunchedURLClassLoader.doLoadClass(LaunchedURLClassLoader.java:131)
org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:103)
java.lang.ClassLoader.loadClass(Unknown Source)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
org.jboss.logging.Logger$1.run(Logger.java:2252)
java.security.AccessController.doPrivileged(Native Method)
org.jboss.logging.Logger.getMessageLogger(Logger.java:2227)
org.jboss.logging.Logger.getMessageLogger(Logger.java:2214)
org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:143)
org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:318)
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:317)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1607)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1544)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:300)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:973)
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:750)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
com.mydomain.GetController.getUser(GetController.java:20)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:947)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:878)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:946)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:822)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
Run Code Online (Sandbox Code Playgroud)
当我的Spring控制器处理连接时:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public @ResponseBody User getUser(@RequestParam(value="id", required=true) …Run Code Online (Sandbox Code Playgroud) 所以我有这个HATEOAS实体.
@Entity
@Table(name="users")
public class User extends ResourceSupport {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private long id;
public User() {
}
public Long getId() {
return new Long(id);
}
public void setId(Long id) {
this.id = id.longValue();
}
}
Run Code Online (Sandbox Code Playgroud)
我的实体的id类型为long,但HATEOAS的ResourceSupport要求getId返回一个Link.
实体具有Long id,因为db具有long id,并且它是持久化实体.如何使用HATEOAS实现此实体?
我正在运行一个spring boot,我的一些域名服务需要知道域名.
我知道我可以在控制器方法的应用层捕获它,如下所示:
@RequestMapping(value="/myMapping",method = RequestMethod.POST)
public ModelandView myAction(HttpServletRequest request) {
}
Run Code Online (Sandbox Code Playgroud)
或者,如果我正在运行一个带有战争的传统Web应用程序,我可以像这样配置一个监听器:
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
并像这样访问它:
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest()
Run Code Online (Sandbox Code Playgroud)
但我不想像我在控制器上捕获它那样传递参数,而且我没有使用web.xml运行战争.
我怎么能吃蛋糕呢?
不久前,我在一个@Controller中使用了Spring Data的存储库.将数据访问权限移到@Service后,它就停止了工作.一切看起来都很好....为什么这个DI失败了?
这是我的spring-config:
<?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:data="http://www.springframework.org/schema/data/jpa"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="POSTGRESQL" />
<property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" />
</bean>
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="dataSource" ref="dataSource" />
<property name="jpaDialect" ref="jpaDialect" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url" value="jdbc:postgresql://localhost:5432/cp" />
<property name="username" value="cp_user" />
<property name="password" value="+JMJ+pw0m2d" />
</bean>
<data:repositories base-package="com.mydomain.data.repository" />
<mvc:annotation-driven />
</beans>
Run Code Online (Sandbox Code Playgroud)
我的应用程序:
@ComponentScan
@EnableAutoConfiguration
@ImportResource("classpath:spring-config.xml") …Run Code Online (Sandbox Code Playgroud) java ×7
spring ×6
jpa ×4
hibernate ×3
jquery ×3
spring-boot ×2
spring-mvc ×2
ajax ×1
firefox ×1
http-put ×1
jquery-ui ×1
json ×1
rest ×1
spring-data ×1