我一般在Spring 3(和J2EE)中开始构建Web应用程序.看看petclinic的例子,我看到程序员创建了很多JSP片段,比如header,includes,footer,然后使用静态包含将它们拼接在一起.无论如何我想要的是我可能有一个基页,喜欢Base.jsp并且能够包含这样的东西:
<body>
<jsp:include page="${subpage}"></jsp:include>
</body>
Run Code Online (Sandbox Code Playgroud)
原因是我想要一个主页面,然后能够输入ModelAndView由控制器返回的页面部分在每种情况下显示(附有数据).这样可行,但如果${subpage}找不到,jsp名称错误或丢失,则不会出现错误.我想要更多的错误检查......
这是最好的和推荐的方法吗?如果这对我的想法似乎是一个好主意,那么正确的做法是什么?
我正在为使用Elasticsearch的应用程序编写一些集成测试,我遇到了一种奇怪的行为.如果我插入一个文档然后我直接查询,我每次都得到不同的结果.我怀疑,虽然插入本身会返回,但索引本身不会同步发生,因此,查询将尝试具有不可预测结果的竞争条件.
如果是这种情况:有没有办法同步,所以当我运行我的查询时,我知道他们已经准备好并且成功了???
更多细节:我使用的是elasticsearch embedded,查询是一个简单的过滤器.唯一奇怪的是我正在使用文档模型的模板文件.
编辑:我甚至尝试在插入后通过ID获取文档,但查询仍然返回随机结果(除非我把线程Sleep等待几秒钟).
当渲染视图时,我遇到了(in)着名的hibernate和延迟加载问题......正如许多人所说,只有两个解决方案是:
后者是优选的IMO.无论如何我不确定这个拦截器是否正在触发(事实上我得到了相同的延迟加载异常并且没有任何变化):
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: it.jsoftware.jacciseweb.beans.Listino.prodotti, no session or session was closed
Run Code Online (Sandbox Code Playgroud)
我正在使用简单的基于注释的url映射,所以阅读Spring 3的文档,我在servlet-context.xml中使用它:
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<!-- <property name="order" value="2" /> -->
<property name="interceptors">
<list>
<ref bean="openSessionInViewInterceptorInst" />
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
哪个应该成功.但它没有用,我得到了例外.我如何确保我的拦截器正在射击?我该如何解决这个问题?
我在日常编程任务中使用Hibernate,我发现它非常好.特别是我喜欢它在开发过程中管理模式更新的方式,这让我免于很多麻烦.
无论如何,他们在文档上写道,它不是在生产环境中推荐的,这是可以理解的.因此,当我在生产服务器上更新应用程序时,可以采用行业标准的方式?我想过创建一个自动安装过程来转储数据库内容(基本上是一个备份),然后从代码调用hibernate架构更新,然后对查询运行一些测试等等.无论如何,是否有自动执行此操作且经过充分测试的工具?
讲出!:)
谢谢.
我正在编写一个我想用表名配置的简单bean,一个包含一些数据的XML文件,这样如果在应用程序启动时表是空的,那么就会使用该数据进行初始化.我决定使用简单的SQL查询,但我无法从sessionfactory获取会话,因为它说:
Error creating bean with name 'vecchiOrdiniFiller' defined in ServletContext resource [/WEB-INF/spring/servlet-context.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
但这是配置(非常类似于服务):
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>
<tx:annotation-driven />
<bean id="ordiniVecchioSistemaLoader" class="it.jsoftware.jacciseweb.assistenza.common.ExcelXmlDataLoader">
<property name="xmlFileName" value="WEB-INF/data/daticlientijaccisemarco.xml"></property>
</bean>
<bean id="vecchiOrdiniFiller" class="it.jsoftware.jacciseweb.assistenza.common.BaseTableFiller" init-method="init">
<property name = "sessionFactory" ref = "mySessionFactory"></property>
<property name="loader" ref="ordiniVecchioSistemaLoader"></property>
<property name="tableCreationString" value="CREATE TABLE `vecchiordini` ( `ID` INT(11) NOT NULL AUTO_INCREMENT, …Run Code Online (Sandbox Code Playgroud) 我有一个JTable,我填充了一个扩展AbstractTableModel的类.问题是列太短而无法显示列名.我已经关闭了Jtable AutoResizeMode属性,但仍然会发生缩短.我该如何解决这个问题?
我有一个集成测试,启动getty,然后它启动一个Web应用程序.Web应用程序将跨越一些将运行初始化任务的异步线程.之后就可以进行测试了.现在,因为我要等待其中一个任务完成,我想把静态监视器放在共享类中:
private static Object bootstrapDone = new Object();
Run Code Online (Sandbox Code Playgroud)
使用以下访问方法:
public static void signalEsBoostrapCompleted(){
synchronized (bootstrapDone){
bootstrapDone.notifyAll();
}
}
public static void waitEsBoostrapCompleted() throws InterruptedException {
synchronized (bootstrapDone){
bootstrapDone.wait(20000);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在测试中运行它,我会得到:java.lang.Object.notifyAll(Native Method)中的线程"Thread-11"java.lang.IllegalMonitorStateException异常
从notifyAll所在的行.我不知道为什么会这样.有人可以帮忙吗?
假设我要动态地将一些内容附加到页面,它涉及一些HTML和一些Javascript(通过添加更多的脚本标记).
我怎么知道一切都准备就绪(就像在页面加载时我会用jQuery $(..))?
或者,在追加操作完成后继续进行是否正常?
所以你知道你可以使用AsynchronousFileChannel将整个文件读取到String:
AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(filePath, StandardOpenOption.READ);
long len = fileChannel.size();
ReadAttachment readAttachment = new ReadAttachment();
readAttachment.byteBuffer = ByteBuffer.allocate((int) len);
readAttachment.asynchronousChannel = fileChannel;
CompletionHandler<Integer, ReadAttachment> completionHandler = new CompletionHandler<Integer, ReadAttachment>() {
@Override
public void completed(Integer result, ReadAttachment attachment) {
String content = new String(attachment.byteBuffer.array());
try {
attachment.asynchronousChannel.close();
} catch (IOException e) {
e.printStackTrace();
}
completeCallback.accept(content);
}
@Override
public void failed(Throwable exc, ReadAttachment attachment) {
exc.printStackTrace();
exceptionError(errorCallback, completeCallback, String.format("error while reading file [%s]: %s", path, exc.getMessage()));
}
};
fileChannel.read(
readAttachment.byteBuffer,
0,
readAttachment, …Run Code Online (Sandbox Code Playgroud) 我从全新安装的 miniconda3 创建了 conda 环境。
之后我将其导出,这是文件的内容(我唯一的额外安装是 Flask):
name: myenv
channels:
- defaults
dependencies:
- ca-certificates=2018.03.07=0
- certifi=2018.11.29=py37_0
- click=7.0=py37_0
- flask=1.0.2=py37_1
- itsdangerous=1.1.0=py37_0
- jinja2=2.10=py37_0
- libcxx=4.0.1=hcfea43d_1
- libcxxabi=4.0.1=hcfea43d_1
- libedit=3.1.20170329=hb402a30_2
- libffi=3.2.1=h475c297_4
- markupsafe=1.1.0=py37h1de35cc_0
- ncurses=6.1=h0a44026_1
- openssl=1.1.1a=h1de35cc_0
- pip=18.1=py37_0
- python=3.7.1=haf84260_7
- readline=7.0=h1de35cc_5
- setuptools=40.6.2=py37_0
- sqlite=3.26.0=ha441bb4_0
- tk=8.6.8=ha441bb4_0
- werkzeug=0.14.1=py37_0
- wheel=0.32.3=py37_0
- xz=5.2.4=h1de35cc_4
- zlib=1.2.11=h1de35cc_3
prefix: /Users/rossid/miniconda3/envs/phadmin
Run Code Online (Sandbox Code Playgroud)
现在我想要的是在文档图像中重新创建这个环境,所以我创建了这个 Dockefile
FROM continuumio/miniconda3
ADD * myappdir/
RUN conda env create -f /myappdir/environment.yml
Run Code Online (Sandbox Code Playgroud)
但它会失败:
Step 1/5 : FROM continuumio/miniconda3 …Run Code Online (Sandbox Code Playgroud) java ×4
spring ×3
hibernate ×2
concurrency ×1
docker ×1
dockerfile ×1
dom ×1
dom-events ×1
jquery ×1
jsp ×1
jtable ×1
jtableheader ×1
lazy-loading ×1
miniconda ×1
nio ×1
python ×1
python-3.x ×1
spring-mvc ×1
sql ×1
swing ×1
text-size ×1
transactions ×1
utf ×1