2016-07-03 14 views
0

Ich bin neu bei Jsp und erstellen eine Webseite, die ein Formular mit einem Auswahlfeld und ein paar andere Eingabefelder hat. ich bevölkern diese Eingabefelder automatisch mit den Werten aus Eigenschaftsdatei:JSP geben NullPointerException für request.getParameter()

NumConfig.properties

SELECT= , , 
ONE=1,I,FIRST 
TWO=2,II,SECOND 
THREE=3,III,THIRD 

Hier ist meine Form:

<html> 
 

 
<body> 
 
    <form name="NumDetail" id="NumDetail" method="post"> 
 
    <div> 
 
     <table> 
 
     <tr> 
 
      <th rowspan="2">Select 
 
      <select id="SelectText" name="SelectText" onchange="this.form.submit()"> 
 
       <option value="ONE">ONE</option> 
 
       <option value="TWO">TWO</option> 
 
       <option value="THREE">THREE</option> 
 
      </select> 
 
      </th> 
 
      <th align="center">Number</th> 
 
      <th align="center">Roman</th> 
 
      <th align="center">Position</th> 
 
     </tr> 
 
     <tr> 
 
      <td align="center"> 
 
      <input type="text" size=10 id="number"> 
 
      </td> 
 
      <td align="center"> 
 
      <input type="text" id="roman"> 
 
      </td> 
 
      <td align="center"> 
 
      <input type="text" id="position"> 
 
      </td> 
 
     </tr> 
 
     </table> 
 
    </div> 
 
    </form> 
 
</body> 
 

 
</html>

Und das ist Der JS-Code, den ich verwende, um Werte aus der Eigenschaftendatei zu laden:

< script type = "text/javascript" > 
    <% 
    ResourceBundle resource = ResourceBundle.getBundle("NumConfig"); 
String dbname; 
if (request.getParameter("SelectText") == null) 
    dbname = "SELECT"; 
dbname = request.getParameter("SelectText"); 
String[] num = resource.getString(dbname).split(","); %> 
var number = "<%= num[0]%>"; 
var rom = "<%= num[1]%>"; 
var pos = "<%= num[2]%>"; 

document.getElementById("number").value = number; 
document.getElementById("roman").value = rom; 
document.getElementById("position").value = pos; < /script> 

Ich kann indirekt diese Seite öffnen durch Anfügen? Select Wert in der URL. Aber wenn diese Seite direkt zu öffnen erhalte ich Nullpointer an der Linie

String[] num = resource.getString(dbname).split(","); 

Zwei Fragen:

  1. Wie kann ich eine Null-Prüfung durchführen oder die Anforderung Parameter einen Standardwert geben, so dass Seite nicht Fehler tut aus?
  2. Sobald ich einen Wert aus der Dropdown-Liste ausgewählt habe und das Formular übergibt, behält das Auswahlfeld seinen Wert nicht bei und kehrt zum Standard zurück. Wie löst man das?
+0

Scriptlets sind böse. –

Antwort

1

Sie brauchen nur eine else Aussage

if (request.getParameter("SelectText") == null) 
    dbname = "SELECT"; 
else 
    dbname = request.getParameter("SelectText"); 

Um eine option standardmäßig aktiviert, sollten Sie diese selected="selected" versuchen. Lagern Sie den Wert irgendwo und ändern Sie Ihre ausgewählte Option dynamisch.

1

Erstens wäre meine Empfehlung nicht, Java-Code in HTML-Code in einer JSP-Seite zu mischen. Versuchen Sie, ein Java-Servlet zu verwenden, um Ihre Anfrage zu verwalten und zu reagieren, damit Sie keinen unordentlichen Code haben.

Ich werde Ihre Fragen beantworten unter:

  1. Sie sind zu prüfen, ob der Parameter „Select“ null ist, und wenn das der Fall ist, dann geben zu ‚dbname‘ einem Standardwert, aber der nächste Befehl ersetzt dieser gegebene Wert mit null.

Der Code sollte wie folgt aussehen:

String dbname = "SELECT"; 
String requestValue = request.getParameter("SelectText"); 

if (requestValue != null) { 
    dbname = requestValue; 
} 
  1. Haben Sie versucht, das Formular Request-Methode mit GET statt POST zu ersetzen?
+0

Danke !! ... Wie dumm von mir! Es wurde versucht, das Formular in GET zu ändern. Es gibt das gleiche Ergebnis. –

Verwandte Themen