在我的工作项目中,我最近被要求通过java类生成POM文件.问题是我对Maven非常非常新(就像去年12月一样).
我需要的是一个莫名其妙的代码生成一个XML文件(POM文件,但如果我可以配置任何XML创建代码,将被罚款)给所有necesary数据,所以他们并不需要手工编写它.我不知道我是否在解释自己,但问题是,是否有任何库或类生成或构造具有给定数据的POM文件?如果不是,这只是罚款,我只是不想失去更多的时间寻找的东西,我不知道如果它存在的话,如果是声明POM对象,然后做一个简单的文档d简单= generatePom(POM p).因为没有人抱怨写POM文件有多难,所以我应该有一个简单的方法来做它们但我想我已经迷失了很多API javadoc并且我找不到回来的路.
如果对此没有代码我的想法是搜索POM词典(覆盖所有元素),并创建一个给定的POM对象的XML文件(我以前充满了我提供的数据),其使用XML生成例如JDOM,XOM或XStream.如果没有已经完成此课程的课程(例如'嘿!你做错了'),任何对此的想法都会受到赞赏.
PS:我已经读过Eclipse项目正在做一些Maven的事情,并且有一个API为你拥有的实际项目生成一个pom.xml文件.如果我可以覆盖输入数据或其他东西,这将是一件好事.
谢谢大家!
我有一个网络应用程序,客户端已要求查看一些报告.方法是使用iReport并在屏幕上显示报告.
我已经问了这样的事情.但今天我发现报告文件(jrxml)的路径是绝对的.所以我必须更改程序,以便它接受相对路径.我一直在尝试这样做,但似乎jrxml或编译(.jasper)文件都不接受既不编译也不填充报告的相对路径.
这是我迄今为止所得到的:
//path is generated as request.getContextPath() + "/jrxmlFiles/"
public void generateReport(HttpServletResponse res, ConexionAdmin con, String path) throws Exception{
ServletOutputStream out = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
JasperDesign jasperDesign = JRXmlLoader.load(path);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, pars, con.initConexion());
res.setContentType("application/pdf");
res.setContentLength(bytes.length);
out = res.getOutputStream();
out.write(bytes, 0, bytes.length);
res.setHeader("Cache-Control", "cache");
res.setHeader("Content-Disposition", "attachment; filename=report.pdf");
res.setHeader("Pragma", "cache");
res.setContentLength(bos.size());
out.write(bos.toByteArray());
out.flush();
bos.close();
out.close();
res.flushBuffer();
}
Run Code Online (Sandbox Code Playgroud)
这似乎适用于绝对路径,但抛出我:
Exception Message
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException
Run Code Online (Sandbox Code Playgroud)
当改为相对路径时.我在网上搜索没有成功如何改变我的适合度.
我有jasper API的javaDoc,但如果我能帮助它,我宁愿不读它.
我在网上搜索了可以放在dependency标记内的scope标记中的所有可能值,但是我没有找到任何列表,其中包含classiffier和类型的相同数据.
有谁知道我能做什么,不能放在这个标签里面?
为了清楚起见,我不是问分类器标签或类型标签做了什么,我只想要一个这个标签接受的数据列表或者我在哪里可以找到它.
谢谢!
我正在用struts创建一个项目,我在使用Jasper IReports时遇到了问题.我想将一些信息导出到pdf文件中并且我一直得到java.lang.IllegalStateException:getOutputStream()已被调用...由于在页面已打开PrintWriter时在我的代码中打开ServletOutputStream而导致异常.
代码在模型中(因此它不在jsp中,它在java文件中),如下所示:
public void handle(HttpServletResponse res, Connection connection, String path)throws Exception{
ServletOutputStream out = null;
try {
JasperDesign jasperDesign = JRXmlLoader.load(path);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, null, connection);
res.setContentType("application/pdf");
res.setContentLength(bytes.length);
out = res.getOutputStream();
out.write(bytes, 0, bytes.length);
} catch (Exception e) {
e.printStackTrace();
} finally {
out.flush();
out.close();
}
Run Code Online (Sandbox Code Playgroud)
我检查了连接,路径和HttpServletResponse,都运行正常.
我是Jasper Reports的新手以及编写PDF格式的东西,所以你可以 - 正确地 - 我对我在这里做的事情有一点了解,显然我的代码是通过网络从某处复制/粘贴的.
我曾尝试使用PrintWriter而不是OutputStream,将字节转换为String并使用PrintWriter.append(String)方法(allthought不是String是CharSequence),但它不会将数据提取到PDF中.
我也尝试获取PrintWriter,关闭它以打开OutputStream(不起作用)或刷新它(两者都没有).
任何帮助解决方案使用任何可以显示pdf数据的解决方案都会很棒.非常感谢!
我的问题是这个; 我必须订购一张数据表.表的每一行都是存储在List中的对象(让我们称之为TableObject).每列数据都是类的属性(通常是String).
当用户点击任何列时,我必须进行典型的数据排序.所以我考虑将List更改为TreeSet并在TableObject中实现Comparator.
当我尝试重新排序TreeSet时出现问题.这个比较起初相当容易(为了省略parseInt中的异常):
public int compare(TableObject to1, TableObject to2){
TableObject t1 = to1;
TableObject t2 = to2;
int result = 1;
if(Integer.parseInt(t1.getId()) == Integer.parseInt(t2.getId())){result=0;}
if(Integer.parseInt(t1.getId()) < Integer.parseInt(t2.getId())){result=-1;}
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我不得不通过数据文本或TableObject所具有的其他数十个数据重新排序时,我遇到了问题.我不想创建几十个比较函数,每个函数对应一个.我不想使用开关(或ifs链)来决定如何比较对象.
有没有办法以某种方式做到这一点(比如Reflexive),这并不意味着我会写出数百行几乎相同的代码?
谢谢大家!
当 Flux 为空时,我试图返回 404,类似于此处:WebFlux 功能:如何检测空 Flux 并返回 404?
我主要担心的是,当您检查通量是否包含元素时,它会发出该值,而您会丢失它。当我尝试在服务器响应上使用 switch if empty 时,它永远不会被调用(我偷偷认为这是因为 Mono 不是空的,只有主体是空的)。
我正在做的一些代码(我的路由器类上有一个过滤器,检查 DataNotFoundException 以返回 notFound):
Flux<Location> response = this.locationService.searchLocations(searchFields, pageToken);
return ok()
.contentType(APPLICATION_STREAM_JSON)
.body(response, Location.class)
.switchIfEmpty(Mono.error(new DataNotFoundException("The data you seek is not here.")));
Run Code Online (Sandbox Code Playgroud)
^这从不调用 switchIfEmpty
Flux<Location> response = this.locationService.searchLocations(searchFields, pageToken);
return response.hasElements().flatMap(l ->{
if(l){
return ok()
.contentType(APPLICATION_STREAM_JSON)
.body(response, Location.class);
}
else{
return Mono.error(new DataNotFoundException("The data you seek is not here."));
}
});
Run Code Online (Sandbox Code Playgroud)
^这会丢失 hasElements 上的发射元素。
有没有办法在 hasElements 中恢复发出的元素,或者让 switchIfEmpty 只检查主体的内容?
我无法让我的反应式代码以一种常见的方式处理错误。理想的方式是在可重用组件中,我可以将其添加为其他项目的依赖项。
过去,我们@RestControllerAdvise通过个性化的@ExceptionHandler功能来处理它们。作为参考,我的代码:
@Configuration
public class VesselRouter {
@Bean
public RouterFunction<ServerResponse> route(VesselHandler handler) {
return RouterFunctions.route(GET("/vessels/{imoNumber}").and(accept(APPLICATION_JSON)), handler::getVesselByImo)
.andRoute(GET("/vessels").and(accept(APPLICATION_JSON)), handler::getVessels);
}
}
Run Code Online (Sandbox Code Playgroud)
此外,处理程序类:
@Component
@AllArgsConstructor
public class VesselHandler {
private VesselsService vesselsService;
public Mono<ServerResponse> getVesselByImo(ServerRequest request) {
String imoNumber = request.pathVariable("imoNumber");
Mono<VesselResponse> response = this.vesselsService.getByImoNumber(imoNumber);
return response.hasElement().flatMap(vessel -> {
if (vessel) {
return ServerResponse.ok()
.contentType(APPLICATION_JSON)
.body(response, VesselResponse.class);
} else {
throw new DataNotFoundException("The data you seek is not here.");
}
}
);
}
public Mono<ServerResponse> getVessels(ServerRequest request) { …Run Code Online (Sandbox Code Playgroud) 我搜索过这个网页寻找答案,但似乎这次我没那么幸运,所以我不得不问.如果它已经回答(找不到它),我道歉.是的,英语不是我的第一语言,所以我也为我的拼写错误道歉,我尽我所能.
这是我的问题,使用Tomcat 5.5,Struts 1.3,JRE 1.5,我使用的是Firefox 3.5.6.在我的jsp页面,我似乎无法把任何src="path/path"我在<script>我试图删除src和一切运作良好,但我的项目将需要大量的从jQuery的使用,我不想要复制/粘贴所有js文件中每个jsp.
这是我的代码:
<script type="text/javascript" src="js/jquery-1.3.2.js">
function showMySelf(){
alert("Hello World!");
}
(... plus other stuff code that actually uses jquery functions)
</script>
Run Code Online (Sandbox Code Playgroud)
和提交按钮:
<input type="submit" onclick="showMySelf()">
Run Code Online (Sandbox Code Playgroud)
当我单击按钮时,没有任何反应(实际上它重新绘制了页面),当我从脚本中删除"src"标签并将所有jquery代码添加到页面时,一切正常.
我已经尝试在路径中添加另一个斜杠"/js/jquery-1.3.2.js"并返回错误.
我尝试过使用ResolveURL,它似乎没有给我更好的结果.
我也尝试将js文件更改为另一个文件("generics.js"和"js.js"),我也试过"js/*.js".
任何一种解决方案都存档了.
我也尝试过使用struts标签(比如html:submit),但它也没有用.
路径实际上是正确的,因为在我的Web浏览器中查找代码会给我一个指向js文件的链接.所以我认为浏览器知道要查找我的js文件,它不会给我一个错误或链接到该文件.
有关为什么会发生这种情况的任何想法?
谢谢你们.
随机.
我真的很新,所以我希望不要犯任何可怕的错误.如果我有,我会事先道歉.
在我的项目中,我使用tomcat并部署WAR文件.但现在有些老板想要部署EAR文件.我们去了.
我首先下载了Glassfish(不知道它是否适用于像我这样的新手的应用程序服务器),并且所有(我甚至在autodeploy中部署了hello.war> _ <).然后准备了一个EAR文件.
据我所知,我只需要在Eclipse中创建一个企业应用程序项目,并将我的war文件添加到模块中.这会自动更改application.xml文件(感谢eclipse项目!).所以我将它导出到EAR文件并将其上传到glassfish服务器.
神奇的奇迹,它不起作用.
我也尝试在这个新的闪亮glassfish中部署旧的WAR文件,但是它发现了http-404 not found错误.glassfish似乎说我的项目不在〜/ domains/domain1/docroot中.顺便说一句,我正在使用Windows,我知道glassfish和windows之间的一些问题,因为一些更新打开文件等.
所以我有疑问:首先,我是否正确地进行了EAR包装?其次,我是否需要对glassfish服务器进行一些特殊配置来部署EAR和WAR文件?
谢谢!
java ×5
compare ×1
dependencies ×1
glassfish ×1
javascript ×1
jquery ×1
maven ×1
maven-2 ×1
outputstream ×1
path ×1
pom.xml ×1
printwriter ×1
servlets ×1
src ×1
web-services ×1