小编tim*_*nYE的帖子

在Java类中注入EJB时出现NullPointerException

我认为这个问题引发了,因为我没有得到EJB的东西.我有一个我的实体的服务类,它是@Stateless.当我通过在我的会话范围演示模型中注入@EJB来使用它时,一切正常.但是现在我想在我已覆盖的DataModel中使用这个EJB服务,以便在我的演示模型中使用:

public class LazyUserDataModel extends LazyDataModel<User> {

    @EJB
    private UserService service;

    @Override
    public List<User> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) {
        List<User> users;
        users= service.findAllUsers();
        this.setRowCount(users.size());
        return users; 
    }
}
Run Code Online (Sandbox Code Playgroud)

执行时,我在"users = service.findAllUsers();"位置获得NullPointerException.当我在演示模型中覆盖此DataModel时,同样有效:

@Named
@SessionScoped
public class UserPM {
    @EJB
    private UserService service;

    private LazyDataModel<User> lazyUsers;

    public UserPM() {

            // Don't works
            //lazyUsers = new LazyUserDataModel();

            lazyUsers = new LazyDataModel() {
            @Override
                public List<User> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) {
                    List<User> …
Run Code Online (Sandbox Code Playgroud)

java jsf ejb

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

如何使用导航规则进行重定向

JSF中的Bean重定向可以通过以下方式完成

externalContext.redirect("foo.xhtml");
Run Code Online (Sandbox Code Playgroud)

但我想使用规则,在<navigation-rule/>(faces-config.xml)中为<from-outcome/>&&传递命令行参数设置.

externalContext.redirect("from-outcome?param=bar");
Run Code Online (Sandbox Code Playgroud)

不管用.怎么做?

navigation jsf redirect jsf-2

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

@WebFilter 和 FacesContext.getCurrentInstance() -&gt; 空指针

在我的应用程序中,我有一个 WebFilter。这个 Webfilter 应该检查一个 coockie。但是使用 FacesContext.getCurrentInstance() 会导致 Nullpointer 异常。我该如何解决这个问题?

网络过滤器:

@Inject
private CookieManager cm;   

[...]

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    if(cm.isDoCheck()){
        cm.doCheck();
    }
    chain.doFilter(request, response);
}
[...]
Run Code Online (Sandbox Code Playgroud)

执行 FacesContext.getCurrentInstance() 的 CookieManager:

[...]
private void doCheck(){
    FacesContext context = FacesContext.getCurrentInstance();
    Map<String, Object> cookies = context.getExternalContext().getRequestCookieMap();

    Cookie cookie = (Cookie) cookies.get("frontend");
    if(cookie != null){
        setSessionHash(cookie.getValue());
    }
}
[...]
Run Code Online (Sandbox Code Playgroud)

context.getExternalContext().getRequestCookieMap(); 给出

StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

jsf servlet-filters

4
推荐指数
1
解决办法
2025
查看次数

为什么粉碎后不会立即出现"堆栈粉碎检测"?

我理解"堆栈粉碎检测"是什么意思.关于这一点,这里已经有很多问题了.但我没有找到以下问题的答案.拿C代码

int main(int argc, char **args) {
   char puffer[5];
   strcpy(puffer, *++args);
   printf("%s\n",puffer);
   return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

当我在Ubuntu 13.10中使用gcc 4.8.1编译时./buffer 123456789会引发预期的错误stack smashing detected.但为什么不./buffer 12345678引起错误呢?我希望每个超过5个字符的字符串都会引发错误.

c buffer-overflow linux-kernel stack-smash

4
推荐指数
1
解决办法
526
查看次数

要列出的对象 - >为什么我要创建一个新对象?

我想了解为什么会发生以下情况:

数据类型库

public class Bank {
    String Blz; String Name;

    public String getBlz() {
        return Blz;
    }
    public void setBlz(String Blz) {
        this.Blz = Blz;
    }
    public String getName() {
        return Name;
    }
    public void setName(String Name) {
        this.Name = Name;
    }    
}
Run Code Online (Sandbox Code Playgroud)

这按预期工作:

public List<Bank> getSearchResult() {        
        List<Bank> banks = new ArrayList<>();
        Bank bank = new Bank();
        bank.setBlz("1");
        bank.setName("Berlin");
        banks.add(bank);
        bank = new Bank();
        bank.setBlz("8");
        bank.setName("München");
        banks.add(bank);
        return banks;
    }
Run Code Online (Sandbox Code Playgroud)

该列表有第一个Element 1/Berlin和第二个8 /München.但这个我不明白:

public List<Bank> getSearchResult() {            
        List<Bank> banks …
Run Code Online (Sandbox Code Playgroud)

java

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

将应用程序设置放在JSF中的位置

我想知道在JSF中放置应用程序范围预设的首选位置是什么.我看到3个选项:

  1. web.xml中
  2. <resource-bundle>在faces-config.xml中配置的属性文件
  3. 属性文件并使用它 java.util.Properties

我更喜欢Nr.2,因为它似乎是最直接和最容易使用的.但我不确定这是否<resource-bundle>合适,因为一般来说我认为是针对本地化消息而不是针对应用程序范围的设置.

java jsf properties jsf-2

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