2013-07-05 2 views
1

У меня есть URL действий после нажатия на ссылку гипер как такNullPointerException при установке боб

/SocialStupendous/GetProfile.action?slno=3&slno=3 

В моем execute методе ActionClass я следующий код

public String execute() { 
    int urislno=Integer.parseInt(getServletRequest().getParameter("slno")); 
    System.out.println(urislno); 
    bean.setUslno(urislno);  
} 

Я получаю NullPointerException когда Я выполняю bean.setuslno(urislno). Хотя urislno напечатан правильно как 3.

ProfileBean класс:

public class ProfileBean { 

    private int uslno; 

    public int getUslno() { 
    return uslno; 
    } 

    public void setUslno(int uslno) { 
    this.uslno = uslno; 
    } 
} 

Почему это происходит?

+0

Почему вы получить доступ к параметру непосредственно из запроса в первую очередь? Что касается NPE, разве не должно быть очевидно, что не так, увидев, что является нулевым? –

+0

Я хочу заполучить тех пользователей, которые нажимали на URL-адрес, говорящий getprofile.action. Единственный способ поймать пользователя - через его/ее slno. Поэтому я хотел проверить, могу ли я получить доступ к параметрам с URL-адреса, которые изменяются, соответствующие пользователям –

+0

Нет необходимости напрямую обращаться к запросу, используя свойство av action. –

ответ

5

bean не инициализирован. Вы должны как-то его инициализировать в действии

private ProfileBean bean = new ProfileBean(); 
//and add getter ans setter 

Более подходящий подход, однако, позволяет контейнеру сделать это за вас. Вам просто нужно создать конфигурацию боба в struts.xml

<bean class="com.yourpackagename.ProfileBean" scope="default"/> 

, то вы бы

private ProfileBean bean; 

@Inject 
public void setProfileBean(ProfileBean bean) { 
    this.bean = bean; 
} 

и вам не нужно проанализировать запрос для параметров, это уже сделано в params перехватчик, который является частью defaultStack, что ваше действие должно выполняться. Вы должны создать свойства в своем действии, чтобы удерживать значения параметров.

private Integer slno; 

public Integer getSlno() { 
    return slno; 
} 

public void setSlno(Integer uslno) { 
    this.slno = slno; 
} 

и действие будет выглядеть

public String execute() { 

    if (slno != null) { 
    System.out.println(slno) 
    bean.setUslno(slno); 
    } 

    ...... 
    return SUCCESS; 
} 
+0

Большое спасибо Роман, который помог многим –

+0

@ Ravidunce Если это помогло вам пометить этот ответ как принятый. –

+0

= Я новичок в этом любезно расскажу, как ответить на него как принятый –

Смежные вопросы