2011-10-16 3 views
1

JSP로 Google 앱 엔진 용으로 개발 중입니다. 그리고 두 문자열을 String 클래스의 startsWith() 메서드로 비교해야합니다.두 문자열을 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이라고 표시됩니다. 이것은 실제로 잘못된 것입니다. javadoc도 보시려면 java.lang.String이어야합니다.

if (artist.startsWith((String) song.getProperty("Artist"))) { 
    // ... 
} 
: 그것은 실제로 String 형태의 경우 (String)에 깁스를 추가하는

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

또는 :

당신은 ObjectString에에서 song.getProperty()의 반환 형식을 변경해야

또는은 전적으로을 사용합니다.:

public String getArtist() { 
    return artist; 
} 

와 함께
if (artist.startsWith(song.getArtist())) { 
    // ... 
} 

마지막으로,이 문제는 JSP에 관련이없는입니다. 일반 Java 클래스에서 그렇게 할 때 똑같은 문제가 발생합니다. JSP 파일에 Java 코드를 작성하는 것은 기본 개념을 올바르게 얻으려면 not the best way입니다.

+0

감사합니다. 나는 끈에 물체를 던졌다. 메소드를 변경할 수 없기 때문에 Google 앱 엔진 API 메소드이기 때문입니다. 그러나 당신의 대답은 제가이 문제를 이해하는데 정말로 도움이되었습니다. – Isuru

+0

반갑습니다. – BalusC

관련 문제