Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Hilfen bei Methoden übergeben

Empfohlene Antworten

Veröffentlicht

ch habe vor mir ein Project und in diesem Project heißt ein Package: Search.

Darin befinden sich mehrere Klassen und eine Klasse besitzt den Namen: SearchBean

Der Quelltext dieser Klasse geht circa über 50 Seiten. Ich benötige daraus eine

Methode die es ermöglicht dokumente nach schlagwörtern zu durchsuchen und

diese auszugeben. Diese Methode ist diese "searchInDocumentFieldsForSimpleSearch"

public List<Document> searchInDocumentFieldsForSimpleSearch(

         final String and_search, final Long userId) {


      final List<Long> documentIds = new ArrayList<Long>(0);

      final List<Long> visibledocumentsForUser_ids = new ArrayList<Long>(0);

      final List<Document> documents = new ArrayList<Document>(0);


      final Session session = sf.openSession();

      final FullTextSession fullTextSession = Search

            .createFullTextSession(session);


      // determine visible documents by user

      visibledocumentsForUser_ids.addAll(dfl

            .getVisibleDocumentsByUser(userId));


      final String newSearch = and_search.trim();

      final Query luceneQuery = createInputFieldQuery(newSearch,

            BooleanClause.Occur.MUST, false);


      final org.hibernate.Query fullTextQuery = fullTextSession

            .createFullTextQuery(luceneQuery, Document.class);

      final Iterator it = fullTextQuery.iterate();


      // while (it.hasNext()) {

      // final DocumentField df = (DocumentField) it.next();

      // if (df != null) {

      // if (!documentIds.contains(df.getDocumentId())

      // && (visibledocumentsForUser_ids

      // .contains(df.getDocumentId()))) {

      // final Document dd = df.getDocument();

      // if(dd!=null){

      // if(Hibernate.isInitialized(dd)==false){

      // Hibernate.initialize(dd);

      // }

      // documentIds.add(dd.getId());

      // documents.add(dd);

      // }

      // }

      // }

      // }


      while (it.hasNext()) {

         final Document d = (Document) it.next();

         if (d != null) {

            if (!documentIds.contains(d.getId())

                  && (visibledocumentsForUser_ids.contains(d.getId()))) {

               documentIds.add(d.getId());

               documents.add(d);

            }

         }

      }



      return documents;


   }


   /*

    * (non-Javadoc)

    *

    * @seede.search.SearchLocal#

    * getAllDocumentsByUserCommunitiesAndByReleaseStatus(java.lang.Long)

    */
Ich habe in diesen project ein neues package: webserive angelegt und den webservice programmiert. Ich benötige in diesem Webservice die methode von oben, aber weis nicht wie ich sie einbinden soll. Hier ist mal der Quelltext zum Webservice. Ich hoffe ihr könnt mir helfen. Ganz unten ist der code zum einbinden der Methode, aber das kann doch nicht alles sein? Danke für jede Hilfe
package web.service;



import javax.ejb.EJB;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

import javax.naming.InitialContext;


import search.*;


@WebService(name = "SearchService", serviceName = "SearchService", targetNamespace = "http://www.Test.de")

public class WebServiceSearch {


@EJB

SearchLocal searchBean;


SearchLocal getSearchBean() {


   if (searchBean == null) {


      try {

         searchBean = (SearchLocal) new InitialContext()

         .lookup("java:comp/env/ejb/SearchEJB");

         } catch (Exception a) {

            throw new RuntimeException(a);

         }

      }

      return searchBean;

   }   



// @WebMethod

//     public java.until.ArrayList<String> getItems(java.lang.String searchTerm) {

//   new java.until.ArrayList<String>();



@EJB

SearchBean object = new SearchBean();

object.searchInDocumentFieldsForSimpleSearch();



}


}

Hallo,

du rufst ja die Methode object.searchInDocumentFieldsForSimpleSearch(); und somit wird diese ausgeführt und gibt dir "documents" zurück, was du dann damit anfängst ist dann was anderes.

Kann natürlich sein, dass ich da was falsch verstanden habe, aber so sieht es für mich aus. ;)

aber warum wird bei mir

EJB

SearchBean object1 = new SearchBean();

object.searchInDocumentFieldsForSimpleSearch();

dann rot unterschrichen mit dem Fehler

Syntax error on token "searchInDocumentFieldsForSimpleSearch", Identifier expected after this token

weil du keine Parameter eingefügt hast ...

public List<Document> searchInDocumentFieldsForSimpleSearch(

final String and_search, final Long userId)

das is deine Methode und du führst nur object.searchInDocumentFieldsForSimpleSearch();

aus.

Also muss ich statt

SearchBean object1 = new SearchBean();

object.searchInDocumentFieldsForSimpleSearch();

das hier schreiben?

public List<Document> searchInDocumentFieldsForSimpleSearch(

final String and_search, final Long userId)

oder da?

public List<Document> searchInDocumentFieldsForSimpleSearch(

final String and_search, final Long userId)

{

return null;

}

nein einfach

SearchBean object1 = new SearchBean();

object.searchInDocumentFieldsForSimpleSearch("Suchbegriff? also ein string!", 001(also hier eine zahl bzw. die userid));

Also wenn ich das schreibe

SearchBean object1 = new SearchBean();

object.searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId)

{

return null;

}

dann unterstreicht er mir das ende alles rot und wenn ich auf fix gehe kommt eine möglichkeit und die sieht so aus.

SearchBean object1 = new SearchBean();

Object searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId)

ja du sollst ja auch einen String und eine UserID eingeben...

ein bsp. (keine garantie das es geht)


SearchBean object1 = new SearchBean();

Object searchInDocumentFieldsForSimpleSearch("Suchbegriff", 00520);

aber ich kann doch nicht einfach schon eine User ID, bzw. Suchbegriff

vorher eingeben, weil der User der diesen Webservice benutz soll ja selber den Suchbegriff eingeben usw.

Der Benutzer muss sich doch sicherlich Anmelden?! Da musst du dir die UserId übergeben lassen und diese dann dort in dem Parametern angeben.

Das Programm brauch die UserId um zu checken welche Dokumente der User sehen darf.

Hast du denn vorher schon Erfahrungen in Java oder anderen Programmiersprachen gesammelt? Ohne jegliches Wissen, wär es angebracht mit leichteren dingen anzufangen.

Na so wird doch die UserID übergeben oder irre ich mich

SearchBean object1 = new SearchBean();

Object searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId)

ja du irrst dich,

final String and_search - woher soll er in der klasse wissen, was die Variable and_search bedeutet???

final Long userId - das selbe hier userId wird nirgendswo definiert....

Du musst dir in der Klasse schon Variablen definieren, welche dir den Suchbegriff geben, dieser muss doch sicherlich auf einer OBerfläche eingegebn werden.... diesen musste dann der Methode object1.searchInDocumentFieldsForSimpleSearch() übergeben.

Genauso die UserID... die musst du auch aus dem Programm auslesen und dann als Parameter dieser Methode übergeben...

Du scheinst scheinbar keine richtig Ahnung zu haben, deshalb empfehl ich dir erstma leichtere dinge zu machen.

Java ist auch eine Insel (8. Auflage) empfehle ich dir ma anzuschauen... dort findest du gute beispiele.

Ok

Also muss ich in meinen Webservice extra eine Variable definieren die

die UserID ausliest und eine Fkt., die diese dann übergibt.

Das selbe dann auch für den Suchbegriff

Danke

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.