有人知道使用Apache POI库使用MS Word的好教程吗?我想了解如何创建word文档.doc(或者我可能需要创建模板.dot)来创建${customer.name}内部文档(模板)之类的变量,然后通过Range.replaceText("${customer.name}","Microsoft CO"); 或者替换它可能${customer.name}不是变量而只是纯文本(为了更清晰起见,它被命名为变量名称)?此外,我没有找到有关在POI中使用表格的教程.
事实上,我有.doc文件,我需要替换一些变量,如Name,Surname,我还需要用一些值填充表.
我有一段返回的Java代码,java.lang.Integer它可以是null:
someClass.getMyInteger
但是当我在Scala类中使用它时,我收到此错误:
引起:scala.Predef $ .Integer2int的java.lang.NullPointerException(Predef.scala:357)
即斯卡拉隐含试图Java的转换Integer到Scala的Int(使用隐式Integer2int方法),但由于在这种情况下Integer是null 它失败的异常.
如何解决这个问题呢?
我在我的项目中使用Restangular,之前这段代码适用于检索对象数组:
var params = {name: "Stack", surname: "Overflow"}
var service = Restangular.all('users')
service.getList(params)
Run Code Online (Sandbox Code Playgroud)
来自服务器的响应只是一个对象数组:
[
{...},
{...}
]
Run Code Online (Sandbox Code Playgroud)
但现在我添加了分页,我的响应现在不包含数组,而是包含数组的对象:
{
totalCount: 500,
data: [
{...},
{...}
]
}
Run Code Online (Sandbox Code Playgroud)
此外,我改service.getList(params)到service.get(params)(因为getList预计只有阵列).
在此更改后,我的GET参数没有字符串化,即我在调试器请求中看到如下:
users/[object%20Object]
但是早些时候(当使用getList方法时)它按预期工作:
users?name=Stack&surname=Overflow
这里有什么问题?
我有这样的标准Lerna存储库:
my-repo
- package.json
- packages
- api
- package.json
- web-app
- package.json
Run Code Online (Sandbox Code Playgroud)
如果我在两个包中都需要相同的依赖项(例如lodash),那么教程中的人建议将它安装到两个子模块中,然后使用lerna bootstrap --hoist标志引导项目。
由于--hoist标志lodash依赖将仅加载到根级别,node_modules但两个子模块都将其作为依赖包含在适当的位置package.json
但是 Node 的包解析算法会在文件树中搜索文件node_modules夹。
所以我的问题是为什么我不能只将公共依赖项安装到根级项目?然后lodash将位于 root 的node_modules. 并且子模块(包)会找到它,因为 Node 会node_module一直搜索直到到达文件系统的根目录。
至少它会帮助我避免使用 uncommon lerna bootstrap --hoist,并且lodash依赖项只会在顶层出现一次package.json(而不是两次:在package.json两个子模块中)
我有一个非常普通的GraphQL模式,如下所示(伪代码):
Post {
commentsPage(skip: Int, limit: Int) {
total: Int
items: [Comment]
}
}
Run Code Online (Sandbox Code Playgroud)
因此,为避免在请求多个Post对象时出现n + 1问题,我决定使用Facebook的Dataloader。
由于我正在使用Nest.JS 3层分层应用程序(Resolver-Service-Repository),因此我有一个问题:
应该使用DataLoader包装存储库方法还是应该使用Dataloder包装服务方法?
下面是我的返回Comments页面的服务方法的示例(即,从commentsPage属性解析器调用的此方法)。内部服务方法中,我使用2个存储库方法(#count 和#find):
@Injectable()
export class CommentsService {
constructor(
private readonly repository: CommentsRepository,
) {}
async getCommentsPage(postId, dataStart, dateEnd, skip, limit): PaginatedComments {
const counts = await this.repository.getCount(postId, dateStart, dateEnd);
const itemsDocs = await this.repository.find(postId, dateStart, dateEnd, skip, limit);
const items = this.mapDbResultToGraphQlType(itemsDocs);
return new PaginatedComments(total, items)
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我应该为每个存储库方法(#count, …
请给我一些库,它们可以帮助我打印包含JBIG2编码图像的PDF文件.PDFRenderer,PDFBox不要帮助我.这些库可以打印简单的PDF,但不能打印包含JBIG2图像的PDF.PDFRenderer尝试修复它(根据PDFRedndrer的bug跟踪器上的bug问题),但仍然有些页面(特别是条形码存在的地方)不想打印.
PS我javax.print在applet中使用API
谢谢!
更新:也试过ICEPdf,太不想工作了.
我得出结论,所有这些库(PDFRenderer,ICEPdf,PDFBox)都使用 JPedalsjbig2解码器.Bug(某些页面未打印)来自此解码器库.该解码器的开源版本(用于PDFRenderer,ICEPdf,PDFBox)不再受支持,但是JPedal该项目有一个新的商业分支,他们写道,这个bug已在新的商业版本中修复,售价9美元ķ.
有任何想法吗?
更新2:昨天我试图用其他开源库取代JPedal的免费jbig2-imageio库.但是我没有取得任何成功的结果,所以我在他们项目的页面上创建了一个新主题(google-code的论坛 - 这里).将不胜感激任何帮助.
@Valid将它放在方法参数级别时,注释的目的是什么?
public void (@Valid Person p) { ... }
Run Code Online (Sandbox Code Playgroud)
我创建了一个测试,并将此方法传递给非有效对象,但没有任何反应.
我希望得到一个例外.
昨天我重构了我的项目,我改变了我的包的布局(我将一些包移到了另一个包中,创建了新的包等).但是现在,当我尝试运行JUnit测试时,我会得到NoSuchMethodError重构后更改名称的方法.此外,当我更改方法中的其他代码时,IDEA仍然运行旧代码..我试图在文件菜单中运行"无效缓存",我也尝试重新启动计算机 - 没有结果.哪里可以有问题?
编辑:昨天移动包后IDEA没有正确更改.java文件中的包声明,所以我手动更改了它们
我注意到我们的高级开发人员使用以下代码按ID检索实体:
@Override
public Source get(Long id) {
Session session = getSession();
if( session == null )
session = sessionFactory.openSession();
final Source source = (Source)session.load(Source.class, id);
Hibernate.initialize(source);
return source;
}
Run Code Online (Sandbox Code Playgroud)
这段代码有什么好处?
为什么不简单写作
return (Soruce) getSession().get(Source.class, id);
Run Code Online (Sandbox Code Playgroud)