Преобразовать набранный текст в нижний регистр - PullRequest
1 голос
/ 15 ноября 2009

У меня есть index.jsp с

[надрез]

<% 
  String name = request.getParameter("name");
  String pass = request.getParameter("pass");
  String globalname = "webeng";
  String globalpass = "2009";
  if (name !=null && pass!=null && name.equals(globalname) && pass.equals(globalpass))
   {
   %>
    <hr />
    <p><b>Howdy, <%= request.getParameter("name") %></b></p>
    <hr />
<% }
  else if (name !=null | pass!=null && name.equals("") | pass.equals(""))
  {
  %>
    <hr />
    <p><b>Ooops, one or more fields are empty. Please fill everything out!!</b></p>
    <hr />
<% }
  else if (name !=null | pass!=null && !name.equals(globalname) | !pass.equals(globalpass))
  {
  %>
    <hr />
    <p><b>Incorrect Userdata!</b></p>
    <hr />
<% }
  else{
  }
%>

[надрез]

Теперь глобальное имя, например, в нижнем регистре "webeng". Люди могут набирать «WebEng», «webENG», «WEBENG» и их варианты.

Мне нужно, чтобы те, которые напечатаны в строках, были преобразованы в нижний регистр. Как-то

String newname = name.toLowerCase();
String newpass = pass.toLowerCase();

не работает. У кого-нибудь есть идеи?

Это то, что Eclipse говорит мне, когда я использую

<% 
      String name = request.getParameter("name");
      String pass = request.getParameter("pass");
      String globalname = "webeng";
      String globalpass = "2009";
      String newname = name.toLowerCase();
      String newpass = pass.toLowerCase();

       if (name !=null && pass!=null && name.equals(globalname) && pass.equals(globalpass))
       {
       %>
        <hr />
        <p><b>Howdy, <%= request.getParameter("name") %></b></p>
        <hr />
    <% }
      else if (name !=null | pass!=null && name.equals("") | pass.equals(""))
      {
      %>
        <hr />
        <p><b>One or more fields are empty!</b></p>
        <hr />
    <% }
      else if (name !=null && pass!=null && !name.equals(globalname) | !pass.equals(globalpass))
      {
      %>
        <hr />
        <p><b>Incorrect Userdata!</b></p>
        <hr />
    <% }
      else{
      }
    %>

Затмение: http://i.imagehost.org/0277/2009-11-15_19_34_00.png

Ответы [ 4 ]

5 голосов
/ 15 ноября 2009

Ваша логика кода странная. Скриплеты также не упрощают тестирование. Вот SSCCE во вкусе настоящего Java-класса, чтобы начать и облегчить тестирование:

public class Test {

    public static void main(String[] args) throws Exception {
        String user = "WeBeNg"; // Change this as if it is user input.
        String pass = "2009"; // Change this as if it is user input.

        String expectedUser = "webeng";
        String expectedPass = "2009";

        if (user == null || pass == null || user.isEmpty() || pass.isEmpty()) {
            System.out.println("Please enter both username and password.");
        } else if (user.equalsIgnoreCase(expectedUser) && pass.equals(expectedPass)) {
            System.out.println("Welcome " + user);
        } else {
            System.out.println("Unknown login.");
        }
    }

}

Надеюсь, это поможет.

Редактировать # 1 : пожалуйста, не размещайте скриншоты. Скопируйте исключение и отслеживание стека в блоках кода. Кстати, исключение не из Eclipse. Это от Tomcat. Кроме того, рассматриваемое исключение (NullPointerException) довольно понятно. Вы получили доступ к объектной ссылке, которая на самом деле является нулевой.

SomeObject someObject = null;
someObject.doSomething(); // Fails with NPE.
someObject = new SomeObject();
someObject.doSomething(); // Succes.

Сначала необходимо выполнить нулевую проверку, например,

if (someObject != null) {
    someObject.doSomething(); // Succes.
} 

Редактировать # 2 Я также рекомендую вам узнать об операторах, приоритетах операторов и группировке выражений в Java. Видите, следующее не "логично"

if (name !=null | pass!=null && name.equals("") | pass.equals(""))

Вот хорошее учебное пособие для начала, чтобы узнать об этом: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html Удачи.

0 голосов
/ 15 ноября 2009

Вот это с equalsIgnoreCase. Если вы действительно не хотите сокращать или использовать оператор |, обычно безопаснее использовать ||. Я также предпочитаю не проваливаться на успех, поскольку в ответе BalusC есть что-то тревожное в том, что условие по умолчанию - «войти» в систему пользователя.

<% 
String name = request.getParameter("name");
String pass = request.getParameter("pass");
String globalname = "webeng";
String globalpass = "2009";
if (name ==null || pass==null || name.equals("") || pass.equals("")) {
// You can use StringUtils.isBlank here instead if you have it available to you
 %>
<hr />
 <p><b>Ooops, one or more fields are empty. Please fill everything out!!</b></p>
 <hr />
<% } else if (name.equalsIgnoreCase(globalname) && pass.equalsIgnoreCase(globalpass))
 {
 %>
  <hr />
   <p><b>Howdy, <%= request.getParameter("name") %></b></p>
  <hr />
<% } else {
 %>
  <hr />
   <p><b>Incorrect Userdata!</b></p>
  <hr />
 }
%>
0 голосов
/ 15 ноября 2009

Вы, кажется, используете | вместо || , Это намеренно?

0 голосов
/ 15 ноября 2009

Вы можете использовать compareToIgnoreCase , и вам не нужно выполнять преобразование самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...