我正在尝试从JSP页面的选项框中获取信息。这方面的一个例子是:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />
<title>Profile</title>
<link rel="shortcut icon" href="../favicon.png" />
<link rel="stylesheet" href="../reset.css" />
<link rel="stylesheet" href="app/claro.css" />
<link rel="stylesheet" href="app/theme/main.css" />
<script type="text/javascript">
// Configure application.
appConfig = {
// Get base url from current url.
baseUrl: location.href.substring(0,location.href.lastIndexOf("/")+1)
};
// Configure Dojo.
dojoConfig = {
parseOnLoad: true
};
</script>
<script type="text/javascript" src="http://cdn.devgrid.net/ajax/dojo/1.9.0/dojo/dojo.js"></script>
<script type="text/javascript">
// Load application.
require(
{
packages: [
{ name: 'app', location: appConfig.baseUrl + '/app/' }
]
},
[
"app"
]
);
</script>
</head>
<body class="claro">
<%
//allow access only if session exists
String user = null;
if(session.getAttribute("user") == null){
response.sendRedirect("login.jsp");
}else user = (String) session.getAttribute("user");
String userName = null;
Cookie[] cookies = request.getCookies();
if(cookies !=null){
for(Cookie cookie : cookies){
if(cookie.getName().equals("user")) userName = cookie.getValue();
}
}
%>
<div class="appBorderContainer" data-dojo-type="dijit/layout/BorderContainer">
<div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top', splitter:false">
<center><IMG SRC="LogoPlaintech.png" width="30%"></center>
</div>
<div class="appLeadingAccordionContainer" data-dojo-type="dijit/layout/AccordionContainer" data-dojo-props="minSize:20, region:'leading', splitter:true">
<div data-dojo-type="dijit/layout/AccordionPane" title="Server status">
Server: RUNNING</br>
IP-address: 0.0.0.0</br>
Uptime: 12 hours 21 minutes 10 seconds </br>
</div>
<div data-dojo-type="dijit/layout/AccordionPane" title="Add a server">
<div data-dojo-type="dijit/form/Form" enctype="multipart/form-data" action="productServlet" method="post">
<div data-dojo-type="dojox/layout/TableContainer" data-dojo-props="cols:1">
<div data-dojo-type="dijit/form/TextBox" title="Name server:" name="name" value=""></div>
<select data-dojo-type="dijit/form/Select" title="Operating System:" name="os">
<option value="Windows">Windows Server 2012</option>
<option value="Ubuntu">Ubuntu 14.10</option>
<option value="Debian">Debian 7.7.0</option>
</select>
<select data-dojo-type="dijit/form/Select" title="Amount of cores:" name="cores">
<option value="1">1 core</option>
<option value="2">2 cores</option>
<option value="3">3 cores</option>
</select>
<select data-dojo-type="dijit/form/Select" title="RAM:" name="ram">
<option value="512">512 MB</option>
<option value="1024">1024 MB</option>
<option value="2048">2048 MB</option>
</select>
<select data-dojo-type="dijit/form/Select" title="HDD:" name="hdd">
<option value="20">20 GB</option>
<option value="35">35 GB</option>
<option value="50">50 GB</option>
<option value="75">75 GB</option>
</select>
</div>
<button id="btnSubmit" data-dojo-type="dijit/form/Button" type="submit" role="button">Submit</button>
</div>
</div>
<div data-dojo-type="dijit/layout/AccordionPane" title="Third pane">
Third pane content.
</div>
</div>
<div id="appCenterTabContainer" data-dojo-type="dijit/layout/TabContainer" data-dojo-props="splitter:true, region:'center'">
<div data-dojo-type="dijit/layout/ContentPane" title="Welcome">
<h3>Hi <%=userName %>, Login successful.</h3></br>
Welcome at your profile page <%=userName %>. </br>
We are happy to see you back.</br>
</br>
From this point it is possible to manage your VM('s), account info and backups.
</div>
<div data-dojo-type="dijit/layout/ContentPane" title="Connect to your server">
You can login to your server by SSH, with your credentials. </br>
IP-address: 0.0.0.0</br>
Port: 22</br>
Username: </br>
Password: </br>
</br>
<center>
<button data-dojo-type="dijit/form/Button" type="button" role="button">Connect
<script type="dojo/on" data-dojo-event="click" data-dojo-args="evt">
app.alert('You are now connecting to your server! Awesome ;-)');
</script>
</button>
</center>
</div>
</div>
<div class="appTrailingAccordionContainer" data-dojo-type="dijit/layout/AccordionContainer" data-dojo-props="minSize:20, region:'trailing', splitter:true">
<div data-dojo-type="dijit/layout/AccordionPane" title="Account info">
Fullname: </br>
${fullName}</br></br>
Email address: </br>
${email}</br></br>
Date of birth: </br>
${dateOfBirth}</br></br>
Phonenumber: </br>
${phoneNumber}</br></br>
<hr>
</br>
Company name: </br>
${companyName}</br></br>
Company email address: </br>
${companyEmail}</br></br>
Payment method: </br>
${paymentMethod}</br></br>
</br>
<button data-dojo-type="dijit/form/Button" type="button" role="button">
Change account info
</button>
</div>
<div data-dojo-type="dijit/layout/AccordionPane" title="Logout">
Are you sure you want to logout the user <%=userName %>?</br></br>
<div data-dojo-type="dijit/form/Form" id="LogoutServlet"
action="LogoutServlet" method="post">
<form action="LogoutServlet" method="post">
<table>
<tr>
<td><button data-dojo-type="dijit/form/Button" type="submit"
name="submitButton" value="Yes">Yes</button></td>
</tr>
</table>
<div data-dojo-type="dijit/form/Form" id="profile.jsp"
action="profile.jsp" method="post">
<form action="profile.jsp" method="post">
<table>
<tr>
<td><button data-dojo-type="dijit/form/Button" type="submit"
name="submitButton" value="No">No</button></td>
</tr>
</table>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
现在问题是我在第32行得到一个空指针异常。所以我猜参数Ram是空的还是什么?我是否尝试过错误的方式?请帮帮我吧!感谢。
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class productServlet extends HttpServlet {
public String name;
public String os;
public String hdd;
public String processor;
public String ram;
public String userName;
public ResultSet rs, rs1;
public PreparedStatement pstmt;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// haal info van de website.
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String Name = request.getParameter("name");
// zet de info van de website in public variables.
Name = name;
String[] OS = request.getParameterValues("os");
if(OS.equals("Windows")) {
os = "Windows";
} else if(OS.equals("Ubuntu")) {
os = "Ubuntu";
} else if(OS.equals("Debian")) {
os = "Debian";
}
String[] Processor = request.getParameterValues("cores");
if(Processor.equals("1")) {
processor = "1";
} else if(Processor.equals("2")) {
processor = "2";
} else if(Processor.equals("3")) {
processor = "3";
}
String[] Ram = request.getParameterValues("ram");
if(Ram.equals("512")) {
ram = "512";
} else if(Ram.equals("1024")) {
ram = "1024";
} else if(Ram.equals("2048")) {
ram = "2048";
}
String[] HDD = request.getParameterValues("hdd");
if(HDD.equals("20")) {
hdd = "20";
} else if(HDD.equals("35")) {
hdd = "35";
} else if(HDD.equals("50")) {
hdd = "50";
} else if (HDD.equals("75")) {
hdd = "75";
}
// test van OS
System.out.print(os);
}
答案 0 :(得分:0)
确保您的(组合框/选项框)在表格标签的开始和结束之间包括您的操作按钮。
例如。
<form action="youraction" method="post/get">
//comboboxes / option boxes and your parameters
.........
.........
<button>.......submit/invoke button </button>
</form>