小编Rom*_*las的帖子

如何在JSF中进行重定向

我有一个网络应用程序,用户可以直接发送到某些特定页面(例如他可以查看或编辑项目的页面).为此,我们提供了一个特定的网址.这些网址位于电流网络的应用程序(即,它们可以存在于另一网络的应用程序,或电子邮件).

网址看起来像http://myserver/my-app/forward.jsf?action=XXX&param=YYY,其中:

  • action表示用户将被重定向的页面.你可以认为这是在from-outcome任何JSF的行动navigation-casefaces-config.xml.
  • actionParam是上一个操作的参数(通常是项ID)

例如,我可以拥有这些网址:

  • http://myserver/my-app/forward.jsf?action=viewItem&actionParam=1234
  • http://myserver/my-app/forward.jsf?action=editItem&actionParam=1234

当然,我有一个Java类(bean),它将检查一些安全性约束(即允许用户查看/编辑相应的项目?),然后将用户重定向到正确的页面(例如edit.xhtml,view.xhtmlaccess-denied.xhtml).


目前的实施

目前,我们有一个完成前进的基本方法.当用户单击该链接时,将调用以下XHTML页面:

<html>
    <body id="forwardForm">
        <h:inputHidden id="myAction" binding="#{forwardBean.hiddenAction}"/>
        <h:inputHidden id="myParam" binding="#{forwardBean.hiddenActionParam}"/>
        <h:commandButton id="forwardBtn" actionListener="#{forwardBean.doForward}" style="display: none;"/>
    </body>
    <script type="text/javascript">
        document.getElementById('forwardForm:forwardBtn').click();
    </script>
</html>
Run Code Online (Sandbox Code Playgroud)

如您所见,我<h:inputHidden>在Java bean中绑定了两个组件.它们将用于存储both actionactionParamrequest参数(使用FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("actiontParam");)的值.我还提供了doForward在呈现页面时立即调用的方法,该方法将(再次)用户重定向到真实页面.方法是:

public void doForward(ActionEvent evt) {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    String redirect = // define the navigation rule that must be …
Run Code Online (Sandbox Code Playgroud)

java jsf jsf-1.2

30
推荐指数
2
解决办法
13万
查看次数

在Angular 2中的for ...指令中获取索引

截至目前,有没有办法for..of在Angular 2 的指令中获取iterable的当前索引?换句话说,相当于$indexAngular.js v1 ......

代码示例:

<ul *for="#task of allTasks">
    <li>{{ $index}} - {{ task.label }}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

(当然这段代码不起作用,它不提供当前索引)

angular

26
推荐指数
2
解决办法
4万
查看次数

如何通过maven属性激活配置文件?

我正在尝试使用内部定义的属性激活maven配置文件pom.xml:

<project>
  [...]
  <properties>
    <run.it>true</run.it>
  </properties>
  [...]
  <profiles>
    <profile>
      <activation>
        <property><name>run.it</name></property>
      </activation>
      [...]
    </profile>
  </profiles>
  [...]
</project>
Run Code Online (Sandbox Code Playgroud)

显然它不起作用.但是,激活可以从命令行进行:

mvn -Drun.it
Run Code Online (Sandbox Code Playgroud)

是"按设计"吗?如果是,那么可能的解决方法是什么?

java maven-2 maven

25
推荐指数
3
解决办法
4万
查看次数

如何使用Hibernate Envers审核连接表和相关实体?

我使用Hibernate Envers来审核我的实体.

我有一个经审计的实体,Foo它有一个List<Bar>属性.但是,我不想审核Bar实体.因此,我写道:

@Entity
@Audited
public class Foo {

    @JoinTable(name = "T_FOO_BAR", joinColumns = @JoinColumn(name = "FOO_ID"), inverseJoinColumns = @JoinColumn(name = "BAR_ID"))
    @ManyToMany(cascade = PERSIST)
    @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
    public List<Bar> getBars() {
        return bars;
    }

}
Run Code Online (Sandbox Code Playgroud)

现在,我想要检索以下版本Foo:

    AuditReader reader = AuditReaderFactory.get(getEntityManager());
    Foo revision = (Foo) reader.createQuery().forEntitiesAtRevision(Foo.class, 42).getSingleResult();
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我想要检索所有数据时(即延迟加载时bars),我得到错误ORA-00942: table or view does not exist,因为它试图查询:

select ... from T_FOO_BAR_AUD x, T_BAR y where ...
Run Code Online (Sandbox Code Playgroud)

我虽然使用@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED),Hibernate …

java hibernate hibernate-envers

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

在Play中获取当前循环的索引!2 Scala模板

在玩!1,可以使用以下代码获取循环内的当前索引:

#{list items:myItems, as: 'item'}
    <li>Item ${item_index} is ${item}</li>
#{/list}
Run Code Online (Sandbox Code Playgroud)

在Play2中是否有相同的功能?

@for(item <- myItems) {
    <li>Item ??? is @item</li>
}
Run Code Online (Sandbox Code Playgroud)

同样的问题_isLast_isFirst.

ps:这个问题非常相似,但解决方案暗示修改代码返回一个Tuple (item, index)而不仅仅是一个列表item.

scala playframework-2.0

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

IntelliJ配置目录

有没有办法配置IntelliJ IDEA(版本8.0.1)存储所有配置文件的目录?

默认情况下,这些文件存储在%home%\.IntelliJIdea80 ...(或.IdeaIC12等)中,但我想定义另一个位置...

谢谢.

configuration intellij-idea

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

检测何时关闭"文件下载"弹出窗口

我有一个网页(由JSF制作),其中一些链接允许用户获取PDF文件.

当用户点击这样的链接时,会显示一个等待弹出窗口(它是一个模态面板)(因为PDF的生成可能很长),并且一旦创建了文件,IE就会显示建议的"文件下载"弹出窗口"打开","保存"和"取消"选项.

当这个弹出窗口关闭时,即当用户保存(或打开)PDF文件时,Javascript是否有办法从我的网页中知道?

为了更精确一点,在显示PDF文件链接的网页中,会显示一个模态弹出窗口("等待弹出窗口"),以使用户等待"文件下载"弹出窗口.问题是当用户保存(或打开)PDF文件时,"文件下载"弹出窗口关闭,但用户然后"返回"到原始网页,同时仍显示等待弹出窗口.

请注意,我的应用程序仅在IE6中运行,因此我不反对IE(6) - 仅解决方案...

对于需要jQuery的解决方案我也没问题;)

编辑: 如果存在一个解决方案来捕获任何在向用户显示"文件下载"弹出窗口时触发的事件(即在用户选择保存,打开或取消之前),那么对我来说也没关系!

javascript internet-explorer download

20
推荐指数
2
解决办法
3万
查看次数

如何配置单个Jenkins作业以从主干或分支进行发布过程?

我目前正在加强Jenkins(1.430)项目的发布过程.

当前的发布工作

今天,对于一个特定项目,我们有一个专门负责发布流程的工作.完整的程序如下:

  1. 负责发布的开发人员手动更改所有pom.xml文件的版本(实际上是使用mvn versions:set -DnewVersion=2.0)来摆脱-SNAPSHOT.
  2. 然后,他在SVN中创建了一个标签(例如,http:// my-svn-repo/project/tags/V_2_0).
  3. 创建此标记后,他会登录我们的Jenkins服务器,并启动发布版本.
  4. 这个构建将询问他想要用于构建的标记.该作业配置为参数化构建,带有参数List Subversion标记.
  5. 然后,Jenkins将从此标记构建工件,并将它们部署在我们的Nexus实例上.
  6. 完成此操作后,开发人员将pom.xml版本设置为新的开发版本(即2.1-SNAPSHOT).

这种方法的优点是我只有Jenkins作业,因为构建只依赖于标记.

但是,此过程涉及太多人为干预(pom.xml,提交,标签等的更改).

新的发布工作

现在,我使用Maven发布插件.我创建了一个工作,向启动构建的用户提出三个信息:

  • 发行版的版本(releaseVersion发布插件的参数);
  • 发布版本,发布后(developmentVersion发布插件的参数);
  • 标签的名称(tag发布插件的参数).

这项工作正常,除了一点:作业基于中继或SVN的分支.这意味着如果我有2个分支(除了主干),我将需要创建3个发布作业:每个分支一个.

保持两个世界中最好的一个想法(即使用mvn发布,但保留1个发布作业),添加一个构建参数,该参数将询问用户中继/分支的路径.因此,我将设置并要求用户输入参数,而不是在作业配置中设置http://my-svn-repo/project/trunk(或http://my-svn-repo/project/branches/BRANCH_V1).http://my-svn-repo/project/$FROM_BRANCHFROM_BRANCH

这种解决方案的问题在于,用户必须输入任一trunkbranches/BRANCH_Vx,这可能导致错误.

理想情况下,我希望有一个构建参数,让我可以选择分支(包括主干),因为选择标签时存在参数List Subversion标签...

所以我的问题是:有没有更好的方法来配置一个可以在所有分支上工作的Jenkins作业?

谢谢.


编辑:我发现验证字符串 Jenkins插件可以很有趣,以确保用户定义的值尊重某些正则表达式.这对我的情况很有帮助......

hudson maven maven-release-plugin jenkins

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

在Eclipse中运行JUnit时自动添加属性

为了在Eclipse上运行我的单元测试,我需要为VM设置一些属性.

因此,当我第一次运行JUnit测试时,我进入"Open Run Dialog",然后在我的JUnit配置中进行此测试,我进入"Arguments"选项卡并将我需要的所有内容放在"VM arguments"文本区域中.

有没有办法在运行JUnit时自动添加一组属性,所以我只能右键单击测试类,然后单击"Run as> Junit Test"来运行测试?

技术信息:Eclipse 3.3.2,JUnit 4,Java 5


编辑,关于Aaron Digulla的回应:

这些属性用于Spring配置文件*.因此,我不能使用Aaron给出的想法,因为Spring将在测试运行之前初始化.

除此之外,我只需要知道我是否可以在Eclipse中轻松实现这一目标.因此,解决方案不得对Eclipse外部的应用程序编译产生任何影响,因为我的应用程序最终将由Maven2编译(和测试).

*很少有"单元"测试确实需要运行我的Spring配置.好的,我知道这不是真正的单元测试; o)

编辑2:事实上,我确实是通过测试单元开始Spring配置.因此,在启动Spring之前,我检查系统属性,如果我的属性没有设置,那么我给它们所需的值...

但是,我有点失望的是Eclipse不能自动为我做这件事......

eclipse configuration junit

17
推荐指数
3
解决办法
3万
查看次数

运行具体测试的快捷方式

我可以使用以下命令运行整个Junit测试:

Shift+ Alt+ X,T

但我怎么能进行单一测试?使用鼠标我点击具体方法和Run As -> Junit test

有谁知道这种情况的捷径?

谢谢

eclipse shortcuts

17
推荐指数
3
解决办法
1万
查看次数