JSP为request.getParameter()提供NullPointerException

时间:2016-07-03 12:51:38

标签: javascript java html jsp

我是jsp的新手,我正在创建一个网页,其中包含一个带有选择框和一些其他输入框的表单。 我使用属性文件中的值自动填充这些输入框:

NumConfig.properties

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

这是我的表格:



<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>
&#13;
&#13;
&#13;

这是我用来加载属性文件中的值的JS代码:

< 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>

我可以通过在URL中附加?SelectText值来间接打开此页面。 但是当直接打开这个页面时,我会在

行获得NullPointerException
String[] num = resource.getString(dbname).split(",");

两个问题:

  1. 如何执行空检查或为请求参数指定默认值,以便页面不会出错?
  2. 从下拉列表中选择一个值并且表单提交后,选择框不会保留其值并返回默认值。如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您只需要else声明

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

要默认选中option,您应该尝试selected="selected"。在某处存储值并动态更改所选选项。

<option value="ONE" selected="selected">ONE</option>

答案 1 :(得分:1)

首先,我的建议是不要在JSP页面中混合HTML代码中的Java代码。尝试使用Java Servlet管理您的请求并重新设置,这样您就不会有一个混乱的代码。

我将在下面回答您的问题:

  1. 您正在检查参数&#34; SelectText&#34;是空的,如果是这样的话,则给予&#39; dbname&#39;默认值,但下一条指令正在用null替换此给定值。
  2. 代码应如下所示:

    String dbname = "SELECT";
    String requestValue = request.getParameter("SelectText");
    
    if (requestValue != null) {
        dbname = requestValue;
    }
    
    1. 您是否尝试使用GET而不是POST替换表单请求方法?