标签: managed-bean

检索没有托管bean属性的JSF输入字段的值

我想在托管bean操作方法中检索JSF输入框的值,而不与任何托管bean属性相关联.例如

<p:inputText id="txtuserid" value="" />
Run Code Online (Sandbox Code Playgroud)

我的用例是,在我的应用程序中,我想提示用户在这里和那里获取每个DML操作的密码,因此喜欢在我的每个UI上都有一个密码和注释相关的字段,并且需要将备注保存在用于审计目的的通用表.

我怎样才能做到这一点?

jsf input managed-bean

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

java.lang.NullPointerException,当我在托管bean的构造函数内部调用其他bean的方法时

当我在一个托管的构造函数内部并试图与其他bean的其他方法联系时,我得到了java.lang.NullPointerException.是否有某种规范不允许托管bean这样做?

@ManagedProperty(value="#{document}")
private DisplayListController document;

@EJB
DocumentSBean sBean;

public NewUserController() {
    document.list();
} 
Run Code Online (Sandbox Code Playgroud)

上面我只是做常规豆注射,没什么花哨的.document是一个SessionScoped托管bean,其方法list()只返回一个String.NewUserController是一个RequestScoped托管bean.

java jsf java-ee managed-bean

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

JSF LInk to View Page

我有一个包含数据表的页面.我希望表中的一些项链接到相应的视图页面.

例如,现在我有一个没有链接的表:

<h:dataTable var="bean" value="#{beanServiceImpl.beans}" border="1">
    <h:column>#{bean.id}</h:column>
  </h:dataTable>
Run Code Online (Sandbox Code Playgroud)

我想添加一些条目的超链接,并让它们转到一个视图页面,根据它们的ID显示更多信息:

  <h:dataTable var="bean" value="#{beanServiceImpl.beans}" border="1">
    <h:column>
        <a href="viewBean.xhtml?id=#{bean.id}">#{bean.id}</a>
    </h:column>
  </h:dataTable>
Run Code Online (Sandbox Code Playgroud)

ViewBean.xhtml将包含以下内容:

ViewBean.xhtml

<ul>
  <li>ID: #{bean.id}</li>
  <li>Field 1: #{bean.field1}</li>
  <li>Field 2: #{bean.field2}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我如何在JSF中完成这样的事情?我知道我必须编写一个控制器来查询其他字段的id.但是,如何使viewBean.xhtml运行业务逻辑以获取其他字段并进行渲染?

jsf hyperlink managed-bean

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

ManagedProperty无法正常工作

我有JSF 2属性绑定的问题,说实话,我在这里碰壁了..

我想要完成的是:请求范围的bean(loginBean)进程登录操作并将用户名存储在会话范围的bean(userBean)中.我想通过@ManagedProperty将userBean注入loginBean,但是当调用loginBean.doLoginAction时,userBean被设置为null.

这是代码:

UserBean类

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class UserBean {

private String username;

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public boolean isLogged() {
    if (username != null)
        return true;
    return false;
}
}
Run Code Online (Sandbox Code Playgroud)

loginBean类:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class LoginBean {

@ManagedProperty(value = "userBean")
private UserBean userBean;

private String name;
private String password;    

public String getName() {
    return name;
} …
Run Code Online (Sandbox Code Playgroud)

jsf-2 managed-bean

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

什么是JSF托管bean和无状态EJB的最佳模式

您认为实现关于会话范围与请求范围的JSF托管bean的最佳方法是什么?在我的例子中,我有一个带有EJB模块和Web模块的EAR应用程序.EJB模块提供无状态会话bean.在Web模块中,我现在在sessionScope中使用ManagedBean.这个bean注入一些staeless会话ejbs并保存一些包含业务数据的值对象,这些对象可以在不同的页面中使用.

@Named("workflowController")
@SessionScoped
public class WorkflowController {
    private List<ItemCollection> someList;
    private ItemCollection someBusinessData;
    /* Services */
    @EJB
    private MyService myService;
Run Code Online (Sandbox Code Playgroud)

bean为前端提供了许多动作方法,并使用无状态会话bean.这是一般的好习惯吗?或者我应该更改我的控制器以请求范围?我见过只在RequestScoped中使用前端控制器的项目,并将所有业务Data对象注入managedProperties,在SessionScope中实现为ManagedBeans.

在我的示例中,我在SessionScope中只有一个控制器,它包含所有业务值并提供在无状态ejbs中实现的业务方法.在另一种情况下,在RequestScopde中使用一个控制器,并且在SessionScope中将许多BusinessValue对象实现为MangedBeans,这些对象被注入到控制器bean中.

我的问题是:将Session EJB注入SessionScope Managed bean一般是不好的做法吗?

jsf ejb managed-bean

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

如何将支持bean值传递给JavaScript?

我想在JSF中读取backing bean值,然后传递给JavaScript,我可以知道如何做到这一点吗?

支持bean示例代码:

@ManagedBean(name="enquiry")
@SessionScoped
public class Enquiry {

  public boolean noQuery;

  /** getter and setter **/
}
Run Code Online (Sandbox Code Playgroud)

在XHTML示例代码中,我想传递支持bean值,然后传递到showNoQueryPrompt()这样:

<h:commandLink onClick="showNoQueryPrompt(#{enquiry.noQuery})">
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)

然后在JavaScript代码中,我可以读取布尔值来确定是否应该提示或不提示.这是代码:

<script ...>
   var showNoQueryPrompt(Boolean showPrompt) {

     if( showPrompt == "true" ) {
        alert('No query');
     }
   }
</script>
Run Code Online (Sandbox Code Playgroud)

javascript xhtml jsf-2 managed-bean

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

从Servlet访问ViewScoped ManagedBean

背景信息:我的jsf页面中有一个文件上传小程序.这个小程序需要一个地址,它可以发送它的POST请求.(我无法编辑此帖子请求以添加更多字段或其他内容).然后我的servlet的post方法存储文件.托管bean无法完成此作业,因为必须使用@MultiPartConfig注释servlet,并且我无法将此批注添加到jsf托管bean.为了强制上传小程序使用相同的会话,我根据这篇文章在帖子请求中添加了一个名为jsessionId的URL属性.在我的servlet中,我现在能够访问会话范围的bean.

现在我有一个ViewScoped bean,我存储了一些我想在servlet中使用的表单输入数据,因为将这些输入添加到post请求不起作用(Applet是第三方项目(JUploadApplet),并且由于某种原因它没有无法添加其他表单数据.现在是否可以从servlet中访问ViewScoped bean?如果我将范围更改为SessionScope,我可以处理输入但是使用ViewScoped,如果我尝试像这样访问bean,我会得到一个NullPointerException:UploadBean uploadBean =(UploadBean)request.getSession().getAttribute("uploadBean");

jsf applet java-ee jsf-2 managed-bean

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

什么时候托管bean的方法应该同步?

如果此方法被commandButton组件作为AJAX请求调用,并且该方法是在托管bean的实例变量上运行,那么我们是否必须同步托管bean方法?

假设我们有这个简单的托管bean:

public class ManagedBeanTest {

  private int count;

  public int getCount() {
    return count;
  }

  public void setCount(int count) {
    this.count = count;
  }

  public String increaseCount() {
    count++;
    return null;
  }

}
Run Code Online (Sandbox Code Playgroud)

因此,如果在这种情况下该increaseCount方法由commandButton内部组件调用action,我是否必须同步此方法?

谢谢您的回答.

jsf thread-safety managed-bean

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

创建会话范围的托管bean时Serializable接口的重要性

我无法理解序列化在会话范围的JSF托管bean中是如何工作的.为什么Serializable在创建会话范围的JSF托管bean时接口的实现很重要?

session jsf serialization managed-bean jsf-2.2

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

禁用在WAR中扫描CDI bean

我有带CDI bean的WAR包.部署包非常慢,因为每次部署期间都会扫描包以查找CDI bean.有没有选项可以禁用此过程?

deployment war scanning cdi managed-bean

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