我需要在我的Java webapp(servlets + JSP,没有使用框架)中使用UTF-8来支持äöå常规芬兰语文本和???特殊情况下的西里尔字母.
我的设置如下:
使用的数据库:MySQL 5.x.
用户主要使用Firefox2,但Opera 9.x,FF3,IE7和谷歌Chrome也用于访问该网站.
怎么做到这一点?
将Spring的配置拆分为多个xml文件的正确方法是什么?
目前我有
/WEB-INF/foo-servlet.xml/WEB-INF/foo-service.xml/WEB-INF/foo-persistence.xml我web.xml有以下几点:
<servlet>
<description>Spring MVC Dispatcher Servlet</description>
<servlet-name>intrafest</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/foo-*.xml
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/foo-*.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
实际问题:
DispatcherServlet 和该context-param板块?为了能够引用foo-servlet.xml从中定义的bean,我需要记住foo-service.xml什么?这是否与指定contextConfigLocation有关web.xml?
更新1:
我正在使用Spring framework 3.0.我的理解是,我不需要像这样进行资源导入:
<import resource="foo-services.xml"/>
Run Code Online (Sandbox Code Playgroud)
这是正确的假设吗?
我有以下ajax请求:
jQuery.ajax({
async: true,
type: "GET",
url: url,
data: data,
dataType: "json",
success: function(results){
currentData = results;
},
error: function(xhr, ajaxOptions, thrownError){
if (xhr.status == 200) {
console.debug("Error code 200");
}
else {
currentData = {};
displayAjaxError(xhr.status);
}
}
});
Run Code Online (Sandbox Code Playgroud)
由于某种原因,错误回调被称为事件,虽然http状态代码是200即.请求没问题.为什么是这样?
目前,我的构建过程包括使用WEB-INF/lib下的所有必需的Java库重新打包war文件,然后将war文件复制到开发/演示/生产服务器以由tomcat重新部署.
打包的war文件大小约为41M,目前它有40M的外部java库.一定有更好的方法.你是怎么解决这个问题的?
我的开发机器是一个Windows框,Eclipse作为我的IDE,Ant作为我的构建工具.这些服务器都是带有Tomcat 5.5的Linux机器.
我是否应该将jar文件添加到服务器端的war包中?
我需要使用键"foo_bar"记录消息头的值,以便当该头的值为"baz"时,日志消息看起来像这样:
标题foo_bar的值:baz
如何使用线控和记录通道适配器执行此操作?
我有以下JPA SqlResultSetMapping:
@SqlResultSetMappings({
@SqlResultSetMapping(name="GroupParticipantDTO",
columns={
@ColumnResult(name="gpId"),
@ColumnResult(name="gpRole"),
// @ColumnResult(name="gpRemarks")
}
)
Run Code Online (Sandbox Code Playgroud)
使用方式如下:
StringBuilder sbQuery = new StringBuilder("Select ");
sbQuery.append(" gpId, ");
sbQuery.append(" gpRole, ");
// sbQuery.append(" gpRemarks ");
sbQuery.append(" FROM v_group_participants_with_details ");
Query query = em.createNativeQuery(sbQuery.toString(), "GroupParticipantDTO");
Run Code Online (Sandbox Code Playgroud)
视图是这样的:
DROP VIEW IF EXISTS `v_group_participants_with_details`;
CREATE VIEW `v_group_participants_with_details`
AS
SELECT
gp.id AS gpId,
gp.role AS gpRole,
gp.remarks AS gpRemarks
FROM GroupParticipation gp
;
Run Code Online (Sandbox Code Playgroud)
GroupParticipation表的备注列定义为LONGTEXT(我使用的是Mysql 5.x)
现在针对问题:当从查询中注释掉备注字段时,一切都运行正常,但如果我尝试在查询中包含备注字段,则会收到以下错误:
javax.persistence.PersistenceException: org.hibernate.MappingException:
No Dialect mapping for JDBC type: -1
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException
(AbstractEntityManagerImpl.java:614)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:76)
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?如何从本机查询中获取LONGTEXT列?
该实体在id列上具有以下注释:
@Id
@SequenceGenerator(name = "JOB_MISFIRE_ID_GENERATOR", sequenceName="job_misfire_sequence", allocationSize=10)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "JOB_MISFIRE_ID_GENERATOR")
@Column(unique = true, nullable = false)
private Long id;
Run Code Online (Sandbox Code Playgroud)
在数据库中,我有以下内容:
CREATE SEQUENCE job_misfire_sequence
INCREMENT 10
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
Run Code Online (Sandbox Code Playgroud)
序列用于获取列的默认值.
ALTER TABLE job_misfires
ALTER COLUMN id SET DEFAULT nextval('job_misfire_sequence');
Run Code Online (Sandbox Code Playgroud)
当我使用nextval('job_misfire_sequence')手动插入数据库时,一切正常.当序列的当前值为1时,生成以下id值:
SELECT nextval('job_misfire_sequence'); --> 1
SELECT nextval('job_misfire_sequence'); --> 11
SELECT nextval('job_misfire_sequence'); --> 21
SELECT nextval('job_misfire_sequence'); --> 31
Run Code Online (Sandbox Code Playgroud)
但是当hibernate在这个表中插入一行时会发生什么呢?它从这个序列得到了下一个值(在这个场景中是41)并将它乘以10并将其用作id值.这意味着插入的行现在具有id值410.
我究竟做错了什么?这种情况会导致冲突,因为hibernate没有使用序列提供的值.如果我已经理解了correclty
,那么注释中的allocationSize = 10和序列中的INCREMENT 10 的组合应该保证hibernate只需要从序列中每十个值请求一个新值.为什么这不会发生?为什么序列中的值乘以10?
我正在使用
更新1: …