Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Строка не проверяется на null


Автор: Гость_junior 7.11.2005, 15:37
Привет, всем,
вопрос:
есть два поля куда надо вводить значения. эти значения передаются в джавабины. никак не получается отловить нулевые значения, т.е. когда пользователь ничего не вводит, а сразу жмет кнопочку сабмит. В обычном приложении все ок, а когда через ЖСП делаю, ничего не получается. Внутри проверяю на равенство null, не отлавливается. Что делать?

Автор: KostenkoSergey 7.11.2005, 16:34
кидай исходину.. - так не понятно ничего smile

Автор: erka 7.11.2005, 16:46
"".equals(string) ?

Автор: ___Yuri 7.11.2005, 16:48
trim(); а потом проверить на размер?...

Кинь код

Автор: KostenkoSergey 7.11.2005, 17:30
smile
Цитата(erka @ 7.11.2005, 16:46)
"".equals(string) ?

дык пустая строка и нулл это ДВЕ БОЛЬШИЕ РАЗНИЦЫ
в жсопе чтось типа такой проверки пиндуль :
Код

if(request.getParameter("param") != null) {
....
}
или как там у тебя .... исходник то всё равно зажал smile
smile

Автор: batigoal 7.11.2005, 17:48
Вообще, если поля должны быть обязательно заполнены, это нужно проверять на клиенте (джаваскриптом). Это совсем просто, но сэкономит юзеру кучу времени.

Автор: KostenkoSergey 7.11.2005, 17:50
Цитата(Lamer @ 7.11.2005, 17:48)
Вообще, если поля должны быть обязательно заполнены, это нужно проверять на клиенте (джаваскриптом). Это совсем просто, но сэкономит юзеру кучу времени.
- smile

ЗЫ ну не выучил я "джаваскриптом" smile

Автор: erka 7.11.2005, 19:40
к тому же javascript можно отключить или javascript может некорректно работать на стороне клиента. так что идеальный вариант - и на клиенте и на сервере.

Автор: batigoal 7.11.2005, 23:08
Цитата(KostenkoSergey @ 7.11.2005, 18:50)
ЗЫ ну не выучил я "джаваскриптом" smile

Там все несложно. Вот примитивный пример (работает в IE и FireFox, насчет остальных браузеров не уверен):

Код

<html>
  <head>
    <script>
      function validateFields()
      {
        if(document.getElementById("name").value.length == 0 ||
           document.getElementById("password").value.length == 0 )
        {
          alert("Вы не заполнили обязательные поля!");
          return false;
        }
        else
        {
          return true;
        }
      }
    </script>
  </head>
  <body>
    <form onSubmit="return validateFields();">
      Name: <input type="text" name="name" id="name">
      <br>
      Password: <input type="text" name="password" id="password">
      <br>
      <input type="submit" value="Send">
    </form>
  </body>
</html>

Добавлено @ 23:12
Ну и, как было справедливо подмечено, валидацию на сервере никто не отменял.

Автор: Гость_junior 8.11.2005, 11:13
Кроче, в чем была проблема...

Текст формочки с полями:

Код

<%@ page errorPage="error.jsp" %>
<html>
<head>
</head>
<body style="font-family: Verdana, Tahoma; font-size=10pt">
<form action="handlerDB.jsp" method="post">
Enter OLD coreid: <input type="text" name="oldCoreid" value=" " maxlength="8"><br>
Enter NEW coreid: <input type="text" name="newCoreid" value=" " maxlength="8"><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>



текст ЖСП handlerDB:

Код

<%@ page errorPage="error.jsp" %>
<html>
<head>
<style type=text/css>
.link { font-family:Verdana, Tahoma; text-decoration:none; }
</style>
</head>
<body style="font-family:Verdana, Tahoma; font-size: 10pt;">
<jsp:useBean id="beanDB" class="beanDB" scope="page"/>

<jsp:setProperty name="beanDB" property="oldCoreid"/>
<jsp:setProperty name="beanDB" property="newCoreid"/>

<jsp:getProperty name="beanDB" property="result"/>
<br>
<br><A class=link href="***">Update more</A>
&nbsp;&nbsp;&nbsp;<A class="link" href="***">Home</A>

</body>
</html>


и код бина, не полный

Код

public class beanDB { 
    private String oldCoreid;
    private String newCoreid;
    private String result;
    private String updated;

    public String getOldCoreid(){return oldCoreid;}
    public String getNewCoreid(){return newCoreid;}
    public String getResult(){return result;}
    
    public void setOldCoreid(String oldCoreidN){
        oldCoreid = oldCoreidN;
    }
    public void setNewCoreid(String newCoreidN){
        newCoreid = newCoreidN;
        if(oldCoreid==null || oldCoreid.trim().length()<=0){
            result = "Enter Old coreid";
        }
        else if(newCoreid==null || newCoreid.trim().length()<=0){
            result = "Enter New coreid";
        }
        else
            {
                changeCoreid();
            }
    }


Так вот, когда в поля ничего не писать, а сразу жмакать кнопочку Сабмит, то поля не проверялись вообще, никакого сообщения не выводилось. Единственным решением которое я нашел, это просто установить в поле дефолтовое значение " ". Теперь проверяется...

Автор: Гость_junior 8.11.2005, 17:38
Вот еще вопрос:

кто-нибудь может привести пример аутентификации? или киньте ссылку, плз

Автор: sergejzr 8.11.2005, 17:44
Код

String param=null;
if(param=request.getParameter("param") != null && param.trim().length()>0)


Так надо проверять smile
Проверка всегда желательна и на клиенте и на сервере. Причём на сервере - всегда обязательна. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)