2010-07-15 4 views
0

При загрузке страницы входа в текстовое поле ввода отображается #{ad.userid}. Когда я удалил его и ввел id и pwd и нажал кнопку отправки, вызывается метод входа, но свойство userid дает нулевое значение в bean-компоненте. Как это может произойти и как я могу его решить?Ошибка при принятии ввода в форме jsf

Вот login.jsp:

<%@ page contentType="text/html"%> 
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> 
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 

<f:view> 
<html> 

     <h:form> 
      <h:outputText value="Login"/> 
      <h:inputText value="#{ad.userid}" id="log" required="true"/> 
      <h:outputText value="Password" /> 
      <h:inputSecret id="pw" value="#{ad.password}" required="true"/> 
      <h:commandButton value="submit" action="#{ad.login}"/> 
     </h:form> 
    </body> 
</html> 
</f:view> 

Вот метод действия бина. Вход успешно работал ранее. Все соединения db устанавливаются в конструкторе.

public String login() { 
    ResultSet rs; 
    try { 
     System.out.println(userid); // this is giving null 
     String s = "select id from slogin where id='" + userid + "'"; 
     System.out.println(s); 
     rs = st.executeQuery(s); 
     if (rs.next()) { 
      String loginid = rs.getString(1); 
      if (userid.equals(loginid)) { 
       id = loginid; 
       return "studhome"; 
      } 
     } else { 
      System.out.println("error"); 
     } 
    } catch(Exception e) { 

    } 
} 

методы получения и установки:

public void setpassword(String pass) { 
    this.password = pass; 
} 

public String getpassword() { 
    return password; 
} 

public void setuserid(String uid) { 
    this.userid = uid; 
} 

public String getuserid() { 
    return userid; 
} 
+0

Во время редактирования правила форматирования сообщений описаны в правой колонке ... – BalusC

+0

Благодарим вас за редактирование моего вопроса. – john

+0

Решена ли эта проблема? – BalusC

ответ

1

Пожалуйста, не торопитесь, чтобы изменить свой вопрос, формат его правильно, используя инструменты форматирования кода, что StackOverflow предоставляет. Скобки появятся, если вы используете кнопку с символом «0101010101».

Ответ:

Изменение:

public void setuserid(String uid) 

в

public void setUserid(String uid) 

, а также:

public void setpassword(String pass) 

в

public void setPassword(String pass) 

Посмотрите на Java Naming Conventions, JSF полагается на них, чтобы получить доступ к свойствам управляемого компонента.

Btw, попытайтесь установить защитный компонент в Session области, чтобы увидеть, если он работает, чтобы отбросить другие проблемы

+0

Я не понимал, как положить символ в код. В любом случае я изменил метод names.but не работал. Проблема была не с именами. Я запустил его успешно ранее с старыми именами. Я положил jfree chart jar файлы в apache/lib/для получения графиков. Я также внес некоторые изменения в путь к классам. У меня появились ошибки с этого момента. Я удалил все эти изменения, но не получил нормальное выполнение, как раньше. – john

+0

См. Мое обновление в нижней части ответа. – pakore

0

Я не уверен, если это полезно - 1) добавить отладки (sysouts) заявления в добытчиками и сеттеры и использовать соглашения об именах, как сказано pakore (лучше вы можете спросить, что затмение будет генерировать геттеры и сеттеры).

2) попробуйте написать Phaselistener, чтобы увидеть, все ли фазы применения запроса и обновления модели жизненного цикла jsf.