每次我尝试发送签名的XML时,Web服务验证程序都会拒绝它.
为了签署文档,我刚刚调整了Microsoft提供的示例代码:
http://msdn.microsoft.com/es-es/library/ms229745(v=vs.110).aspx
我的实施:
public static XmlDocument FirmarXML(XmlDocument xmlDoc)
{
try
{
X509Certificate2 myCert = null;
var store = new X509Store(StoreLocation.CurrentUser); //StoreLocation.LocalMachine fails too
store.Open(OpenFlags.ReadOnly);
var certificates = store.Certificates;
foreach (var certificate in certificates)
{
if (certificate.Subject.Contains("xxx"))
{
myCert = certificate;
break;
}
}
if (myCert != null)
{
RSA rsaKey = ((RSA)myCert.PrivateKey);
// Sign the XML document.
SignXml(xmlDoc, rsaKey);
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return xmlDoc;
}
// Sign an XML file.
// This document cannot …Run Code Online (Sandbox Code Playgroud) 我正在使用 Spring Boot 和 thymeleaf 作为 Web 应用程序。
\n\n我想自定义验证错误消息而不是使用默认消息。我发现这样做的方法是创建一个名为 messages.properties 的文件,其中包含约束和消息。我还发现我可以根据我的目标类创建自定义消息,并且我还可以基于此使用国际化方法。
\n\n为了覆盖默认消息,我创建了自己的 messages.properties 文件:
\n\nSize.message=El tam\xc3\xb1o no es correcto\nNotNull.message=No puede ser nulo\nMin.message=No cumple con el minimo\nRun Code Online (Sandbox Code Playgroud)\n\n我在班级中设置了约束:
\n\npublic class Person {\n\n @Size(min=2, max=30)\n private String name;\n\n @NotNull\n @Min(value = 18L)\n private Integer age;\n\n public String getName() {\n return name;\n }\n\n public void setName(String name) {\n this.name = name;\n }\n\n public Integer getAge() {\n return age;\n }\n\n public void setAge(Integer age) {\n this.age = age;\n }\n}\n …Run Code Online (Sandbox Code Playgroud) 我使用Jaspersoft Studio创建报告,我发现将参数传递给表时出现问题.
报告布局和结果
正如您在这些图片中看到的那样,当我尝试使用参数来设置表头时,我得到了null.
为了获取值,我在报告参数列表和表数据集参数列表中创建了相同的参数名称.显然,它根本不起作用.
我试着按照这些说明操作:jaspersoft-passing-parameter-to-tables
但我的数据源来自net.sf.jasperreports.engine.data.JRBeanCollectionDataSource参数,我找不到成功完成教程的方法.
相关代码:
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="subreport" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="19165c65-293a-42f1-9c92-0f4ceacaaa39">
.....
<subDataset name="ATableDataset" uuid="f7f9da25-c513-46bb-92c2-5a97ee76eb5e">
<parameter name="tableHeadA" class="java.lang.String"/>
<parameter name="column1AHead" class="java.lang.String"/>
<parameter name="column2AHead" class="java.lang.String"/>
<parameter name="column3AHead" class="java.lang.String"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="column1A" class="java.lang.String"/>
<field name="column2A" class="java.lang.String"/>
<field name="column3A" class="java.lang.String"/>
</subDataset>
.....
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="ATableDataset" uuid="8ac10f33-c9e3-4678-8280-2830a76f72c6">
<dataSourceExpression><![CDATA[$P{AtableDatasource}]]></dataSourceExpression>
</datasetRun>
....
</jr:table>
......
</jasperReport>
Run Code Online (Sandbox Code Playgroud)
完整代码见gitHub,sample\src\main\resources\subreport.jrxml
为了拥有一个可执行jar,我包含了maven依赖项.一切正常,但是jasperreports_extension.properties.Jasper已经有一个替换我的默认值.
我想知道如何将两个文件(默认文件和自定义文件)组合到jar文件中.实际上我手动组合了两个设置,现在我想找到替换程序集插件复制的文件的方法,我已经合并了.
这是我当前的maven程序集插件设置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
<configuration>
<archive>
<manifest>
<mainClass>
com.test.sample.MainClass
</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
这些是我在报告中添加一些字体的自定义设置:
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.ireportfamily1453367638844=fonts/fontsfamily1453367638844.xml
Run Code Online (Sandbox Code Playgroud)
和依赖:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.2.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
编辑:
考虑依赖性:
jasperreports_extension.properties 在里面(根级)
jasperreports-6.2.0.jarjasperreports_extension.properties在里面(根级)
jasperreports-fonts-6.0.0.jar(这只是一个测试依赖项)在我用一个阴影替换了程序集插件之后,我报告的初始问题是固定的,但是我得到了这个新问题:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: no manifiest section for signature file entry org/bouncycastle/mail/smime/SMIMEEnvelopedGenerator$EnvelopedGenerator.class
at sun.security.util.SignatureFileVerifier.verifySection(Unknown Source)
at sun.security.util.SignatureFileVerifier.processImpl(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud)