2011-10-16 32 views
1

我正在爲使用JSP的Google應用程序引擎進行開發。我需要通過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 

提前感謝!

回答

4

錯誤說明它無法在String類中找到給定方法method startsWith(java.lang.Object)。請注意,錯誤說java.lang.Object作爲方法參數。這確實是錯誤的。它必須是java.lang.String,另請參閱javadoc

你必須從ObjectString改變song.getProperty()返回類型:

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以獲得正確的基本概念。

+0

謝謝!我將對象轉換爲字符串。由於我無法更改這些方法,因爲它們是谷歌應用程序引擎API方法。但你的回答確實幫助我弄清楚了這個問題。 – Isuru

+0

不客氣。 – BalusC