小编Sim*_*mon的帖子

为什么f:validateDoubleRange仅适用于@SessionScoped?

有人可以向我解释为什么我的例子中的Foo在到达validateDoubleRange类时总是为空?最终结果是验证器的最小值始终为0.在outputText元素中,数字3在页面上显示正常.如果我做豆@SessionScoped而不是它,它验证很好@ViewScoped

控制器:

import java.io.Serializable;
import java.math.BigDecimal;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ViewScoped
@ManagedBean(name = "fooController")
public class FooController implements Serializable {

    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(FooController.class);
    private static final long serialVersionUID = 1L;
    private Foo foo;
    private BigDecimal amount;
    private Long fooId;

    public Long getFooId() {
        return fooId;
    }

    public void setFooId(Long fooId) {
        this.fooId = fooId;
        this.foo = new Foo();
        foo.setFooId(fooId);
        foo.setMinAmount(Double.valueOf(3));
        foo.setMaxAmount(Double.valueOf(10));
    }

    public Foo getFoo() {
        return foo;
    }

    public void sendAmount() { …
Run Code Online (Sandbox Code Playgroud)

java validation jsf java-ee jsf-2

11
推荐指数
1
解决办法
5101
查看次数

@PostConstruct为@ConversationScoped bean多次调用

我有一个@ConversationScoped bean,带有一个start方法,如下所示:

@PostConstruct
public void start() {
    if (conversation.isTransient()) {
        conversation.begin();
        log.debug("conversation.getId(): " + conversation.getId());
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,每次刷新页面时都会启动一个新会话,每次我对bean中的方法进行AJAX调用时,也会启动一个新的会话(这是我的主要问题).

我真正想要发生的是让sam对话流连,直到我手动调用conversation.end().我在这里错过了什么?

java cdi seam-conversation java-ee-6 jboss-weld

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

在JBoss/JAAS中使用HTTP Request.login

我已经成功设置了JBoss安全域,并且可以使用BASIC身份验证进行身份验证(如web.xml中所定义).这一切都运作良好.但我无法弄清楚如何使用http request.login方法.

以下安全域(来自jboss-web.xml)适用于BASIC身份验证:

<jboss-web>  
    <context-root>/myapp</context-root>  
    <security-domain>java:/jaas/myapp-realm</security-domain>  
</jboss-web> 
Run Code Online (Sandbox Code Playgroud)

但是当我使用request.login时如下:

public void login() {
    FacesContext context = FacesContext.getCurrentInstance();
    HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
    try {
        request.login(username, password);
    }
    catch (ServletException ex) {
        java.util.logging.Logger.getLogger(UserLogin.class.getName()).log(Level.SEVERE, null, ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

javax.servlet.ServletException: Failed to authenticate a principal
Run Code Online (Sandbox Code Playgroud)

我知道用户名/密码很好(使用BASIC auth工作正常).我有TRACE级别登录,看起来甚至没有尝试进行身份验证.我错过了什么?

如果您需要有关我的setup/config的更多详细信息,请参阅http://java-web-development.blogspot.com/2011/07/jee-6-security-part-two-implementation.html.我正在使用JBoss 6.

java security jaas java-ee-6 jboss6.x

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