gpt4 book ai didi

java - "java.lang.IllegalArgumentException: id cannot be zero"将GAE实体发送到JSP时

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:10 24 4
gpt4 key购买 nike

我正在尝试将从 Google App Engine 的数据存储区检索到的实体发送到 JSP 页面。在我的 servlet 中,我可以看到实体已正确恢复(我记录了一个属性)。但不知何故,当将响应发送回 JSP 页面时,我收到标题中提到的错误。

这是我的 Servlet 代码:TweetPermalinkController.java

package com.socialwebapp;

import java.io.IOException;
// import java.util.logging.Logger;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.EntityNotFoundException;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;

@SuppressWarnings("serial")
public class TweetPermalinkController extends HttpServlet {

// private static final Logger log = Logger.getLogger(NewTweetController.class.getName());

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
String id = req.getPathInfo().split("/")[1];
System.out.println("25: " + id);

long tweetId = 0;

try{
tweetId = Long.parseLong(id);
} catch (Exception e) {
e.printStackTrace();
}

System.out.println("35: " + tweetId);

Entity tweet = null;
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();

Key tweetKey = KeyFactory.createKey("Tweet", tweetId);

try {
tweet = ds.get(tweetKey);

System.out.println((String) tweet.getProperty("message"));

resp.setContentType("text/html");
req.setAttribute("id", tweetId);
req.setAttribute("tweet", tweet);
req.getRequestDispatcher("show_tweet.jsp").forward(req, resp);
} catch (EntityNotFoundException e) {
e.printStackTrace();
}
}

}

web.xml中的代码:

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

<servlet>
<servlet-name>IndexPage</servlet-name>
<servlet-class>com.socialwebapp.HomePageController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexPage</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>NewTweetPage</servlet-name>
<servlet-class>com.socialwebapp.NewTweetController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NewTweetPage</servlet-name>
<url-pattern>/new_tweet</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>TweetPermalinkPage</servlet-name>
<servlet-class>com.socialwebapp.TweetPermalinkController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TweetPermalinkPage</servlet-name>
<url-pattern>/tweet/*</url-pattern>
</servlet-mapping>

</web-app>

JSP:show_tweet.jsp:

<h2>Show Single Tweet</h2>

以下是我在控制台中看到的日志和错误: https://pastebin.com/gqKvTVBK

<小时/>

我不明白为什么我看到下面几行的第四行。前 3 行符合预期,我不明白为什么我看到我的 jsp 文件的名称,我什至没有在任何地方记录它:

25: 6544293208522752

35: 6544293208522752

new

25: show_tweet.jsp

java.lang.NumberFormatException: For input string: "show_tweet.jsp" 35:0

<小时/>

我花了半天时间试图解决这个问题。任何帮助或指导将不胜感激。

这里是存储库的链接:https://github.com/ghoshabhi/SocialWebApp/

TIA!

最佳答案

我在 java 上工作不多,但查看日志,问题似乎是 NumberFormatException TweetPermalinkController.java:30

我建议更好地处理错误,以便在“id”无法转换时代码不会进一步执行。出于调试目的,您可能需要退出/返回。

关于java - "java.lang.IllegalArgumentException: id cannot be zero"将GAE实体发送到JSP时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44223205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com