gpt4 book ai didi

java - 使用 startsWith 比较两个字符串时出现编译错误

转载 作者:行者123 更新时间:2023-11-29 03:53:14 25 4
gpt4 key购买 nike

我正在使用 JSP 为谷歌应用引擎开发。我需要通过 String 类中的 startsWith() 方法比较两个字符串。

这是我正在处理的代码。

    <% 
String artist = "Surendra Perera";

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Key songKey = KeyFactory.createKey("songs", 123454);
// Run an ancestor query to ensure we see the most up-to-date
// view of the songs.
Query query = new Query("Song", songKey).addSort("Artist");
//query.addFilter("Artist", Query.FilterOperator.IN, "Milton Mallawarachchi");
List<Entity> songsList = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(30));
if(songsList.isEmpty()){
%>
<p>There are no songs</p>
<%
}else{
%>
<ul class="playlist">
<%
for(Entity song : songsList){
if(artist.startsWith(song.getProperty("Artist"))){
%>

<li><a href="<%= song.getProperty("Link") %>"><%= song.getProperty("Title") %>&#160;&#160;<span class="comment"><%= song.getProperty("Artist") %></span></a></li>

<% }}} %>

这是我遇到的错误....

HTTP ERROR 500

Problem accessing /search.jsp. Reason:
Unable to compile class for JSP:

An error occurred at line: -1 in the generated java file
[javac] C:\DOCUME~1\SILICO~1\LOCALS~1\Temp\Jetty_127_0_0_1_8888_war____.g0qk00\jsp\org\apache\jsp\search_jsp.java:178: cannot find symbol
[javac] symbol : method startsWith(java.lang.Object)
[javac] location: class java.lang.String
[javac] if(artist.startsWith(song.getProperty("Artist"))){
[javac] ^
[javac] 1 error



Stacktrace:

Caused by:
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: -1 in the generated java file
[javac] C:\DOCUME~1\SILICO~1\LOCALS~1\Temp\Jetty_127_0_0_1_8888_war____.g0qk00\jsp\org\apache\jsp\search_jsp.java:178: cannot find symbol
[javac] symbol : method startsWith(java.lang.Object)
[javac] location: class java.lang.String
[javac] if(artist.startsWith(song.getProperty("Artist"))){
[javac] ^
[javac] 1 error

提前致谢!

最佳答案

错误提示它无法在 String 类中找到给定的方法 method startsWith(java.lang.Object)。请注意,错误显示 java.lang.Object 作为方法参数。这确实是错误的。它必须是 java.lang.String,另请参阅 javadoc .

您必须将 song.getProperty() 的返回类型从 Object 更改为 String:

public String getProperty(String name) {
// ...
}

或者(String) 上添加一个转换,如果它是实际上 String 类型:

if (artist.startsWith((String) song.getProperty("Artist"))) {
// ...
}

使用完全值得的Javabean :

public String getArtist() {
return artist;
}

if (artist.startsWith(song.getArtist())) {
// ...
}

最后但同样重要的是,这个问题与 JSP 无关。在普通的 Java 类中这样做时,您会遇到完全相同的问题。在 JSP 文件中编写 Java 代码是 not the best way正确理解基本概念。

关于java - 使用 startsWith 比较两个字符串时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788111/

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