我正在尝试一个简单的JSF应用程序,我需要检查"name"字段是否为空,然后显示错误消息.
获取字段值的代码是:
<h:outputLabel value="Name"/>
<h:inputText value="#{greeting.name}" required="true">
<f:validator validatorId="NumValidator"/>
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
如果在没有输入任何内容的情况下提交字段,则程序的控制不会进入验证器类,并且它会显示默认错误消息:
j_id_jsp_869892673_1:j_id_jsp_869892673_4:验证错误:值是必需的.
如何为此显示自定义消息?
在我们的Web应用程序中,我们对Java bean进行了一些重构,由于这种重构,一些操作/获取器不再可用.例如,在以下示例中:
public class MyBean implements Serializable {
// Old name
// public String getFoo() { return "foo"; }
// New name
public String getBar() { return "bar"; }
}
Run Code Online (Sandbox Code Playgroud)
如果我的JSF代码仍然如下:
<h:inputText value="#{myBean.foo}" .../>
Run Code Online (Sandbox Code Playgroud)
那么它会产生一个例外.
我主要担心的是,一些EL表达式现在可能指向Java bean上的未使用的方法,而我只能在浏览适当的页面时看到它.当EL表达式位于特定条件下呈现的部分和/或由Ajax重新呈现时,它变得更加困难.
所以我的问题是如何静态检查这些EL表达式的正确性?
我检查了JSFUnit工具,因为它提供了这样的实用程序.所以我尝试了这个例子,但它似乎没有按预期工作.在一个简单的测试页面上,只有很少的EL表达式(一些是正确的,一些其他错误的未发布的bean和/或方法),测试成功,这是不正确的.
一个非常重要的注意事项:我的bean是在我的Spring配置中定义的,而不是在我的faces-config.xml.
另请注意,我只需要检查EL表达式是否引用现有的bean和方法,而不一定是这个动作将被正确执行...
技术信息:
Java 1.6,Spring 2.5,JSF 1.2,EL Functor,Facelets和Richfaces 3.3
我们正在尝试重构我们的模块化 Maven 构建。我们引入了一个属性 DEPLOYMENT_ENV,它可能是“prod”、“dev”、“staging”或其他。我们进入的心态是我们可以定义:
dev.jdbc.username = yoyodyne
dev.jdbc.password = 0verthruster
staging.jdb.username = cavaliers
staging.jdbc.password = 8thdim
Run Code Online (Sandbox Code Playgroud)
这似乎崩溃的地方是提供 Maven 插件的配置。例如,DBUnit 需要一个用户名。从语义上讲,我们想到的解决方案如下所示,但是 Maven 不允许以这种方式进行递归属性定义:
<configuration>
<username>${${DEPLOYMENT_ENV}.jdbc.username}</username>
</configuration>
Run Code Online (Sandbox Code Playgroud)
有什么关于参数化 Maven 构建的想法,这样我们就可以保留我们庞大的属性定义中央列表吗?
当前,我的Web应用程序基于以下库/框架/工具:
一些其他信息:
Spring负责管理JSF使用的所有bean(在我的文件中org.springframework.web.jsf.DelegatingVariableResolver定义为)。variable-resolverfaces-config.xmlEL-Functors用作my el-resolver来扩展表达语言。我想尝试(本质上是出于好奇,但是如果这很好,为什么不真正呢?)将我的应用程序迁移到JSF 2.0。
问题1:为了使我的应用程序正确运行,必须考虑哪些关键点?
我在这里谈论的只是拥有一个正在运行的应用程序,仅此而已,仅此而已。
我已经知道我将必须检查所有自定义组件,因为我将使用新版本的Richfaces(4.0),并查看它们是否正常运行。
问题2:要利用JSF 2.0的第一步是什么?我已经有了一些想法:
EL-Functors并使用表达语言2.2;@ManagedBean。还是切换到CDI库(例如Weld)?<f:ajax>代替<a4j:support>?关于JavaEE6
我知道,一个好主意是完全迁移到JavaEE6。我很喜欢这样做,但是由于某些原因,我不能那样做。一个(不好的)原因是我必须留在Tomcat服务器上。但是,我可以添加新的第三方库以具有某些JavaEE6功能,例如EL 2.2...。因此,请在回答中考虑这一方面。
问候。
我想RunListener在单元测试中使用我自己的。所以我创建了以下类:
public class MyRunListener extends RunListener {
public MyRunListener() {
System.out.println("Creation of Run Listener...");
}
@Override
public void testStarted(Description description) throws Exception {
System.out.println("A Test is going to start");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在我的pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<properties>
<property>
<name>listener</name>
<value>my.company.MyRunListener</value>
</property>
</properties>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
现在,当我mvn test在项目中运行时,输出如下:
Creation of Run Listener...
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running xxx.SomeNewTests
Test New #1
Test New #2
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, …Run Code Online (Sandbox Code Playgroud) 我试图从Java代码(使用基本JDBC)检索我的Oracle DB的不同类型的元数据.例如,如果我想检索带_FOO后缀的表列表,我可以执行以下操作:
Connection connection = dataSource.getConnection();
DatabaseMetaData meta = connection.getMetaData();
ResultSet tables = meta.getTables(connection.getCatalog(), null, "%_FOO", new String[] { "TABLE" });
// Iterate on the ResultSet to get information on tables...
Run Code Online (Sandbox Code Playgroud)
现在,我想从我的数据库中检索所有序列(例如所有序列命名S_xxx_FOO).
我怎么会这样做,因为我没有看到DatabaseMetaData与序列相关的任何内容?
我是否必须运行查询select * from user_sequences?
我的问题:当从Test Suite执行此类时,是否有办法强制Maven Surefire(或JUnit?)指示失败的测试类的名称?
现在,漫长的故事.
想象一下,你有一个JUnit测试套件,可以启动两个JUnit测试.
测试类的示例:
public class TestOne {
@Test
public void foo() {
assertTrue(false);
}
@Test
public void bar() {
assertTrue(false);
}
}
@UnitTest
public class TestTwo {
@Test
public void foo() {
assertFalse(true);
}
}
Run Code Online (Sandbox Code Playgroud)
和测试套件:
@RunWith(Suite.class)
@SuiteClasses(value = { TestOne.class, TestTwo.class })
public class MySuite {
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行测试套件(mvn test -Dtest=MySuite),我将有以下错误:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running caf.opm.preclosing.junit.MySuite
Tests run: 3, Failures: 3, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec …Run Code Online (Sandbox Code Playgroud) 给出这段代码片段
//Creates a list of List numbers
List<List<Number>> num = new ArrayList<List<Number>>();
//Creates a list of List doubles
List<List<Double>> doub = new ArrayList<List<Double>>();
//List of doubles
List<Double> d = new ArrayList<Double>();
d.add(2.5);
d.add(2.6);
doub.add(d);
num.add(d);//This code will not compile
Run Code Online (Sandbox Code Playgroud)
为什么不允许num.add(doub)?不是List<List<Number>>超级型
List<List<Double>>?
我正在测试Microsoft Exchange Web服务Java API(版本1.2)以从服务器读取邮件.这是我的代码:
String url = "https://my-server/EWS/exchange.asmx";
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.setTraceEnabled(true);
service.setCredentials(new WebCredentials("user", "password"));
service.setUrl(url.toURI());
Mailbox mailbox = new Mailbox("foo@bar.com");
FolderId folder = new FolderId(WellKnownFolderName.Inbox, mailbox);
ItemView view = new ItemView(10);
view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Descending);
FindItemsResults<Item> items = service.findItems(folder, view);
Run Code Online (Sandbox Code Playgroud)
不幸的是,此代码抛出以下错误:
Exception in thread "main" microsoft.exchange.webservices.data.EWSHttpException: Connection not established
at microsoft.exchange.webservices.data.HttpClientWebRequest.throwIfConnIsNull(Unknown Source)
at microsoft.exchange.webservices.data.HttpClientWebRequest.getResponseCode(Unknown Source)
at microsoft.exchange.webservices.data.EwsUtilities.formatHttpResponseHeaders(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeServiceBase.traceHttpResponseHeaders(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeServiceBase.processHttpResponseHeaders(Unknown Source)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(Unknown Source)
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.findItems(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.findItems(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 尽管有些人有相同的问题(如[here] [1]或[there] [2]),但我没有成功在Angular(1.2.25)应用程序中测试我的指令.
这是我的项目结构:
myapp
+- src/main/java/resources/META-INF/resources/workflow/directives
| +- directives.js
| +- *.html (all templates)
+- src/test/javascript
+- karma.conf.js
+- spec/directives
+- text-input.spec.js
Run Code Online (Sandbox Code Playgroud)
(是的,不是一个好的结构,但我的Angular应用程序停留在Java项目中)
我的业力配置:
// Karma configuration
module.exports = function (config) {
config.set({
...
// base path, that will be used to resolve files and exclude
basePath: '',
// testing framework to use (jasmine/mocha/qunit/...)
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
// Third parties dependencies: jQuery, Angular, Angular modules, Angular mocks …Run Code Online (Sandbox Code Playgroud) javascript angularjs angularjs-directive karma-runner karma-jasmine