小编Rom*_*las的帖子

在简单的JSF应用程序中显示空白字段的自定义错误消息

我正在尝试一个简单的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:验证错误:值是必需的.

如何为此显示自定义消息?

jsf message

5
推荐指数
1
解决办法
2万
查看次数

如何静态测试EL表达式的正确性?

在我们的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

testing jsf el

5
推荐指数
1
解决办法
358
查看次数

递归定义maven属性

我们正在尝试重构我们的模块化 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 构建的想法,这样我们就可以保留我们庞大的属性定义中央列表吗?

maven-2

5
推荐指数
1
解决办法
1652
查看次数

将JSF 1.2应用程序迁移到JSF 2.0

当前,我的Web应用程序基于以下库/框架/工具:

  • Java 1.6
  • JSF 1.2_07-b03-FCS
  • 小面1.1.14
  • Richfaces 3.3.2.GA
  • EL-Functors 1.0.2
  • 春季2.5.2
  • Tomcat服务器v5.5

一些其他信息:

  • Spring负责管理JSF使用的所有bean(在我的文件中org.springframework.web.jsf.DelegatingVariableResolver定义为)。variable-resolverfaces-config.xml
  • EL-Functors用作my el-resolver来扩展表达语言。
  • 我创建了许多自定义组件,其中一些只是Facelets组成,其他是基于Java的组件(其中有些是Richrichs组件的扩展)。

我想尝试(本质上是出于好奇,但是如果这很好,为什么不真正呢?)将我的应用程序迁移到JSF 2.0。

问题1:为了使我的应用程序正确运行,必须考虑哪些关键点?

我在这里谈论的只是拥有一个正在运行的应用程序,仅此而已,仅此而已。

我已经知道我将必须检查所有自定义组件,因为我将使用新版本的Richfaces(4.0),并查看它们是否正常运行。

问题2:要利用JSF 2.0的第一步是什么?我已经有了一些想法:

  • 删除EL-Functors并使用表达语言2.2;
  • 让JSF管理Bean,并使用@ManagedBean。还是切换到CDI库(例如Weld)
  • <f:ajax>代替<a4j:support>

关于JavaEE6

我知道,一个好主意是完全迁移到JavaEE6。我很喜欢这样做,但是由于某些原因,我不能那样做。一个(不好的)原因是我必须留在Tomcat服务器上。但是,我可以添加新的第三方库以具有某些JavaEE6功能,例如EL 2.2...。因此,请在回答中考虑这一方面。

问候。

jsf

5
推荐指数
1
解决办法
9267
查看次数

将 JUnit RunListener 与 Maven 结合使用

我想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)

junit surefire maven

5
推荐指数
1
解决办法
9195
查看次数

如何从JDBC检索序列元数据?

我试图从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

java jdbc sequence database-metadata

5
推荐指数
2
解决办法
5327
查看次数

有没有办法强制Maven Surefire或JUnit在从Test Suite执行时指出失败的测试类的名称?

我的问题:当从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)

java junit test-suite surefire maven

5
推荐指数
1
解决办法
1763
查看次数

为什么在集合中添加类型的子类a是非法的?

给出这段代码片段

    //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>>

java generics wildcard pecs

5
推荐指数
1
解决办法
146
查看次数

无法建立与Exchange Web服务的连接 - Java API

我正在测试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)

java exchangewebservices

5
推荐指数
1
解决办法
8548
查看次数

无法在Karma测试中为Angular指令加载模板HTML文件

尽管有些人有相同的问题(如[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

5
推荐指数
1
解决办法
3385
查看次数