小编Rob*_*ume的帖子

JSF:如何在验证消息中不显示元素id?

我有一个简单的JSF表单,对输入文本进行了一些验证.就像是:

<h:inputText id="firstName" value="#{userHandler.user.firstName} required="true" />
<h:message for="firstName" />
Run Code Online (Sandbox Code Playgroud)

工作良好.除了错误消息如下所示:

"j_id786643870_20c27c0a:firstName:验证错误:值是必需的."

如何告诉JSF不要显示元素的元素id并只显示文本消息?

也就是说,我只想说:

"验证错误:需要值."

jsf

7
推荐指数
1
解决办法
4485
查看次数

p:commandLink不会重定向到新页面?

我正在使用JSF2和GlassFish,PrimeFaces 2.1.

这样工作,showCreateProfile()方法被命中,方法返回"profileForm",浏览器重定向到该页面:

<h:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" />
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,showCreateProfile()方法获取命中,并且方法返回"profileForm"但浏览器不会重定向到页面.我尝试了三件不同的事情,没有运气:

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" />

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" />

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" immediate="true"/>
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?

jsf glassfish primefaces

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

JSF:bean范围; 会话与请求

我有一个名为的托管bean UserSearchHandler,它有一个doSearch填充的方法,UserSearchHandler.searchResults它显示在userSearch.xhtml页面的表格中.

我有另一个托管bean UserHandler,它有一个showUser方法等等.

在搜索结果表中,用户名是一个链接,单击该链接时,应显示userView.xhtml页面上的用户详细信息.表和链接如下所示:

<p:dataTable var="user" value="#{userSearchHandler.searchResults" >

// ... and so on ... then

<h:commandLink value="#{user.firstName}" action="#{userHandler.showUser}">
  <f:setPropertyActionListener target="#{userHandler.userIdToShow}" value="#{profile.id}"/>
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)

当托管bean设置为session范围时,一切正常.

但是,当我更改bean的范围时request,搜索工作并填充表,但是当我点击名称链接时没有任何反应.我在userHandler.showUser方法上设置了一个断点,当它userSearchHandler被设置为"请求"范围时它永远不会被击中.

任何人都可以帮助解释为什么这是,或者我做错了什么?

jsf

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

GlassFish 3.1,如何在服务器的根目录中部署带有WAR的EAR?

我有一个带有WAR的EAR,我正在GlassFish 3.1上部署

目前,该应用程序在localhost:8080/myapp/index.jsf上运行

我希望它在localhost:8080/index.jsf上运行

为此,我将EAR中的application.xml从contextRoot"myapp"更改为contextRoot ="/"

当我使用GlassFish管理UI部署我的EAR时,它会给我一个部署错误,然后当我尝试浏览到管理界面时,它会向我显示默认的GlassFish主页.要恢复,我必须从命令行使用asadmin取消部署我的EAR,然后执行restart-domain以重新启动服务器.

我的理论是我的应用程序和GlassFish管理员UI都在root"/"上运行.

问题:在GlassFish 3.1的根目录中部署我的Web应用程序的正确方法是什么?或者这是不好的做法?

谢谢!

ear glassfish

6
推荐指数
1
解决办法
7340
查看次数

Java Swing或SWT:构建桌面UI"向导"的简便方法 - 建议?

我是一位经验丰富的Java程序员.习惯用Eclipse手工完成很多Swing,但过去几年大部分时间都是用Web东西.

我必须构建一个桌面用户界面,一种向导的东西,从列表中选择项目,键入字段,然后......下一个......接下来......那样的事情.

在我使用Swing手动构建它之前,我想知道Java世界中是否有关于桌面UI的任何重大进展.有什么我应该看的,可能是一个拖放式UI构建器,或某种框架,这将使它更容易?

任何建议都很有用,谢谢!抢

java user-interface swing swt

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

如何在两个Web应用程序(PHP和Java EE)之间进行单点登录(SSO)?

我有一个在GlassFish 3.1上运行的现有Java EE Web应用程序。通过在GlassFish 3.1中配置的jdbcRealm,登录可以正常工作。

另一个团队中的某人正在用PHP开发一个单独的Web应用程序,老板不希望这些应用程序的用户必须登录两次。也就是说,当他们登录Java Web应用程序并单击将其带到PHP应用程序的链接时,它们也应该已经登录到该应用程序。(反之亦然。)

不确定如何实施。我当时以为我可以生成一个长随机密钥(令牌),该随机密钥是在任一应用程序的登录时生成的,并在每个Web请求中传递给任一应用程序以标识已登录的用户,但这似乎并不安全。

我需要正确方向的指针。

php java-ee single-sign-on

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

如何在iText生成的PDF中将图像添加到我的标题?

我正在使用iText生成PDF.我创建了一个自定义PdfPageEventHelper来为每个页面添加页眉(和页脚).

我的问题是我不知道如何添加图像,因此它显示在"标题框"中.我只知道如何将图像添加到文档内容本身(如果这有意义).

这是一些代码片段......

public static void main(String[] args) {
  Rectangle headerBox = new Rectangle(36, 54, 559, 788);
  /* ... */
  Document document = new Document(PageSize.A4, 36, 36, 154, 54);
  PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILENAME));
  HeaderFooter event = new HeaderFooter();
  writer.setBoxSize("headerBox", headerBox);
  writer.setPageEvent(event);
  document.open();
  addContent();
  document.close();
}

static class HeaderFooter extends PdfPageEventHelper {

  public void onEndPage(PdfWriter writer, Document document) {
    Rectangle rect = writer.getBoxSize("headerBox");
    // add header text
    ColumnText.showTextAligned(writer.getDirectContent(),
      Element.ALIGN_RIGHT, new Phrase("Hello", fontHeader1),
      rect.getLeft(), rect.getTop(), 0);

    // add header image …
Run Code Online (Sandbox Code Playgroud)

java itext

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

为什么这个'addRow'javascript不能在IE中运行?

我有以下javascript,在表的底部添加一个新行.

它在Firefox中运行良好,但它在IE(版本8)中不起作用.

据我所知,没有明显的错误.

任何想法都非常有用!

function addRow() {

  // locate the last row in the table
  var table = document.getElementById("approversTable");

  var rows = document.getElementsByTagName("tr");
  var rowToClone;
  for (var i=0; i<rows.length; i++) {
    if (rows[i].id != "") {
      rowToClone = rows[i];
    }
  }

  // clone the row
  var clone = rowToClone.cloneNode(true);
  var rowId = Math.floor(Math.random()*100000);
  clone.id = rowId;
  // add the new row to the table
  table.appendChild(clone);

}
Run Code Online (Sandbox Code Playgroud)

javascript firefox internet-explorer

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

为什么我得到这个"枚举"不是类或命名空间错误?

我需要在我的Manager类中调用带有此签名的方法:

void createPlayer(Player& player, PlayerType& playerType);
Run Code Online (Sandbox Code Playgroud)

我的播放器定义如下:

using namespace std;

enum PlayerType { FORWARD, DEFENSEMAN, GOALIE };

class Player {
  public:
    Player();
    void setType(PlayerType);
  private:
    PlayerType type;
};
Run Code Online (Sandbox Code Playgroud)

这就是我尝试在main中调用方法的方法......

#include "Player.h"
#include "Manager.h"

int main() {

  Manager manager;
  Player player;
  PlayerType t = PlayerType::FORWARD;
  manager.createPlayer(player, t);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

...但是无法使用此错误进行编译:

Main.cc: In function ‘int main()’:
Main.cc:12:18: error: ‘PlayerType’ is not a class or namespace
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?注意:我无法更改createPlayer方法的签名.

c++ enums

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

如何用log4j2只记录一个级别?

我在我的应用程序中使用log4j2.

我想要的是一切都要去'调试'去控制台,一切到'info'去myapp.log,只有'info'去'myapp-audit.log'.

原因是,INFO主要包括对数据的成功修改(例如"用户创建","用户更新","用户删除"等).如果是有效的数据修改审计日志.

但我无法弄明白该怎么做.

如何才能获得"info"以登录"myapp-audit.log"?这是我目前的配置......

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>

        <File name="LogFile" fileName="myapp.log">
            <PatternLayout
                pattern="%d{yyyy-mm-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </File>

        <File name="AuditFile" fileName="myapp-audit.log">
            <PatternLayout
                pattern="%d{yyyy-mm-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </File>
    </appenders>

    <loggers>
        <root level="debug">
            <appender-ref ref="Console" level="debug" />
            <appender-ref ref="LogFile" level="info" />
            <appender-ref ref="AuditFile" level="info" /> <!-- I want ONLY 'info' here -->
        </root>
    </loggers>
</configuration>
Run Code Online (Sandbox Code Playgroud)

java configuration logging log4j log4j2

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