我想发送一个Pdf作为电子邮件附件(我正在使用JavaMail API).我有一个Pdf(由jasper生成)作为byte[].
public InputStream exportPdfToInputStream(User user) throws ParseErrorException, MethodInvocationException, ResourceNotFoundException, JRException, IOException{
JasperPrint jasperPrint = createJasperPrintObject(user);
byte[] pdfByteArray = JasperExportManager.exportReportToPdf(jasperPrint);
return new ByteArrayInputStream(pdfByteArray);
}
Run Code Online (Sandbox Code Playgroud)
这是我用来构建MimeBodyPart附件的代码:
if (arrayInputStream != null && arrayInputStream instanceof ByteArrayInputStream) {
MimeBodyPart attachment = new MimeBodyPart(arrayInputStream);
attachment.setHeader("Content-Type", "application/pdf");
mimeMultipart.addBodyPart(attachment);
}
Run Code Online (Sandbox Code Playgroud)
这段代码给了我这个错误:
javax.mail.MessagingException: IOException while sending message;
nested exception is:
java.io.IOException: Error in encoded stream: needed at least 2 valid base64 characters, but only got 1 before padding character (=), the 10 most recent …Run Code Online (Sandbox Code Playgroud) 我有一个Java webapp创建一个pdf并将其流回浏览器.
byte[] pdf = report.exportPdfToArray(user);
response.setContentType("application/pdf");
response.setHeader("content-disposition", "inline; filename=\"My.pdf\"");
outStream = response.getOutputStream();
outStream.write(pdf);
outStream.flush();
outStream.close();
Run Code Online (Sandbox Code Playgroud)
报告被执行并被发送回浏览器,但即使我设置了,我也无法控制文件的名称content-disposition.我正在使用Jboss 4.2.1.你知道我错过了什么吗?
编辑:当内容处置是内联时,有没有办法设置文件名?
有没有办法从blob块中读取和写入使用Hibernate.现在我得到了OutOfmemoryException因为整个blob数据被加载到内存中byte[].
更具体地说,假设我想将一个大文件保存到一个名为的数据库表中File.
public class File {
private byte[] data;
}
Run Code Online (Sandbox Code Playgroud)
我在FileInputStream中打开文件然后呢?我如何告诉Hibernate我需要流式传输内容并且不会立即提供整个byte[]数组?我应该用Blob而不是byte[]吗?无论如何我如何流式传输内容?
关于读书,有没有办法,我可以告诉Hibernate是(除了延迟加载它)我需要大块要加载的斑点,所以当我取回我File不应该给我OutOfMemoryException.
我在用:
我正在使用jqGrid和搜索工具栏.现在有几列我不需要搜索字段,因为我不想让它们可搜索(即一列复选框).对于这些列,我想隐藏搜索工具栏中的搜索字段.我在jqGrid 文档中已经读过该viewable选项可以设置为false.这是我设置viewable选项的部分:
colModel :[
{name:'checkbox', index:'checkbox', width:'3%', viewable:false},
Run Code Online (Sandbox Code Playgroud)
以下是我创建搜索工具栏的方法:
jQuery(function(){
jQuery("#listTable").jqGrid('filterToolbar',{stringResult: true, searchOnEnter: false});
});
Run Code Online (Sandbox Code Playgroud)
根据文档,该viewable选项仅在viewGridRow激活方法时有效.
但是当我使用(激活)viewGridRow方法时,会创建另一个对话框.在该对话框viewable中,未显示设置为false 的列.但我想在搜索工具栏中隐藏搜索字段而不是在新对话框中.我怎样才能做到这一点?
我也试图得到相应的div(围绕我的搜索字段的那个)并将其设置style.display为none.但这没有用.
有没有办法在搜索工具栏中隐藏此搜索字段?
我想验证一些对象.验证有两部分:
我有很多规则(实际上总共大约25个),比如下面那些需要验证的规则:
我将这些规则分为几种方法,一种方法中的4或5条规则.如果规则失败,则不会检查其他规则.我需要在每个使用此验证的方法中构造一个验证器(或设置一个已构造的验证器).
我正在寻找一种设计模式,可以更容易地构建一个结构来验证对象.我的目标是能够提供特定的错误消息.例如,如果验证失败,因为用户没有权限,那么我想让他/她知道这一点.如果由于对象的状态而失败,那么我想显示它.
首先我虽然是装饰模式.我有一个错误消息处理程序对象,可以使用特定的错误消息进行修饰.一个装饰器将检查用户权限,另一个装饰器用于状态.但是我构建验证器对象的顺序无关紧要,因此不使用装饰器模式的功能.(AFAIK这是使用装饰器的一大优势 - 混合装饰).我认为链条可能更适合这种情况......?!?!您会为此方案推荐哪种设计方案?
我正在使用Spring 3.2和AspectJ 1.7.1.(我不太可能在不久的将来升级到更高版本.)
我需要为抽象类中的受保护方法定义切入点.AFAIK我需要AspectJ非公开的方法,所以我只用(AspectJ)注释尝试了这个:
package com.aspects;
@Aspect
public class Aspect{
@Before("execution(* com.x.y.x.MyClass.myMethod(..))")
public void beforeAspect(){
//do something here
}
}
Run Code Online (Sandbox Code Playgroud)
在我的beans.xml身上:
<aop:aspectj-autoproxy />
<bean id="myAspect" class="com.aspects.Aspect"/>
Run Code Online (Sandbox Code Playgroud)
我已经检查并且我的Aspect类被创建(构造函数被调用),启动应用程序时不会抛出任何异常.但是我无法得到它beforeAspect.对于非抽象类中的公共方法,这是有效的.如何使它适用于抽象类中的受保护方法?
我想在Java中使用德语语言环境格式化double类型的数字.但是出现问题,因为以下代码的输出是:0.0
package main;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;
public class Test {
private static String decimal2Format = "000.000";
public static void main(String args[]){
DecimalFormat format = (DecimalFormat)NumberFormat.getInstance(new Locale("de"));
double value = 0;
try {
format.applyPattern(decimal2Format);
value = format.parse("0.459").doubleValue();
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(value);
}
}
Run Code Online (Sandbox Code Playgroud)
你有什么想法有什么不对吗?
谢谢,阁楼
如何使用JapserReports创建带有固定标头的Excel报告?我的意思是当我滚动Excel文件时,我需要修复标题.
我在Eclipse(Indigo Service Release 1)中遇到了编码问题.这是发生的事情:
我有一个德语的属性文件(语言包),当我打开它时,它没有正确显示Eclipse.例如:gelöscht显示为gel?scht.我曾试图改变文件关联Text Editor,Properties File Editor,JBoss Tools Properties Editor但它是这个样子在所有情况下.
有趣的是,当我打开文件时,Notepad++它正确显示.在Eclipse,文本文件编码设置为UTF-8,文件的编码(根据Notepad++)是ANSI.
还有其他的设置我不知道吗?如何修复此问题以查看正确的编码Eclipse?
java ×6
architecture ×1
aspectj ×1
blob ×1
css ×1
decimal ×1
eclipse ×1
email ×1
encoding ×1
hibernate ×1
httpresponse ×1
iostream ×1
jakarta-mail ×1
javascript ×1
jqgrid ×1
locale ×1
mime-types ×1
oracle ×1
pdf ×1
servlets ×1
spring ×1
spring-aop ×1
stream ×1
validation ×1