突然很開心,緊張了好幾天的項目終于不那么趕了。
我是一個比別人慢半拍的人,所以一定要比別人多付出一點努力。
今天在進行添加新聞的時候發現可擴展的還有好多,可惜也只能是腦子里有東西,但都不知道應該怎么做(但愿不會忘,等下次學習之后還會回過頭來做這件事)。
順便說一下今天犯的錯誤。
在進行添加新聞時,糾結了好久。
/**
* 獲取從頁面讀取的數據
* @param request
* @return 單個新聞信息
* @throws UnsupportedEncodingException
*/
PRivate News getNews(HttpServletRequest request) throws UnsupportedEncodingException {
request.setCharacterEncoding("UTF-8");
//讀取用戶選擇的是哪一個主題ID
String id = request.getParameter("topic");
//把值轉換為Int類型 傳給 Topic實體類
Topic topic = new Topic(Integer.parseInt(id));
//標題
String title = request.getParameter("title");
//作者
String author = request.getParameter("author");
//摘要
String summary = request.getParameter("summary");
//內容
String ncontent = request.getParameter("ncontent");
News news = new News(topic,title,author,summary,ncontent);
return news;
}
/**
* 添加新聞
*/
public void addNews(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean b = ndi.addNews(getNews(request));
if( b){
selectNews(request, response);
}else{
request.setAttribute("errorInfo", "新聞添加失敗!");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
下面詳細說為什么獲取錯了。
第一步:
我先手動從數據庫往表中添加數據,結果發現可以。但是不能執行。
第二步:
我修改了要添加進news實體類中的值,改為了字符串而并非是頁面的內容,結果上面顯示說,有FK約束。還是不能執行。
第三步:
終于知道錯誤所在了,好開心。然后就把我之前建錯的外鍵約束給改了。
t_news : id ==t_topic : id ---> t_news : tid == t_topic : id
因為我把兩個表中的主鍵給關聯一起了,所以就不能執行。改成新聞表中的主題ID列與主題表中的ID列相對應就可以了。結果發現還是不能執行。
第四步:
又跳轉到頁面上,發現我竟然沒有給下拉菜單個名字??!
唉,真是粗心大意的我啊。然后想起了教員所謂的要讓程序找到你的下拉框才能給值,于是就給了id。
這樣應該就行了吧。結果還是不行。
第五步:
頭昏昏的,看來我是真的做不出來了。然后叫了教員問為什么。他就看了一眼,說了句:
<%--想要獲取select的value值,就需要給他一個名字。切記:用name而非id,ID是唯一的,適用于CSS,name利于后臺獲取 --%>
呵呵,原來如此,不是id而是name啊。
<select name="topic">
<c:forEach items="${topicList}" var="topic">
<option value="${topic.id}" />${topic.tname}
</c:forEach>
</select>
這個項目終于能見睜眼了,好開心??粗约簞撛斐鰜淼臇|西,真心幸福。
最后告誡我一句,調試真的很重要,英語單詞真的很重要,課外知識真的很重要。
新聞熱點
疑難解答