JSP giving NullPointerException for request.getParameter()



我是新的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>

这是我用来从属性文件加载值的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中附加? selectttext值来间接打开该页。但是当直接打开这个页面时,我在

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

两个问题:

  1. 我如何执行空检查或给请求参数一个默认值,使页面不会出错?
  2. 一旦我从下拉框中选择了一个值,表单提交,选择框不保留它的值,并回到默认值。如何解决这个问题?

您只需要一个else语句

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

要使默认选择的option,您应该尝试这个selected="selected"。将值存储在某个地方,并动态更改所选选项。

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

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

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

  1. 你正在检查参数"SelectText"是否为null,如果是这种情况,然后给'dbname'一个默认值,但下一个指令是用null替换这个给定的值。
代码应该是这样的:
String dbname = "SELECT";
String requestValue = request.getParameter("SelectText");
if (requestValue != null) {
    dbname = requestValue;
}
  • 你试过用GET代替POST的表单请求方法吗?
  • 最新更新