At line 160 changed 1 line. |
Now add the same method signature to src/service/**/service/__PersonManager.java__. Save all your files and adjust the imports in your tests. Next you need to implement the getPeople() method in your implementation classes. Open src/dao/**/dao/hibernate/PersonDaoHibernate.java and add the following method: |
Ora aggiungi la stessa firma al metodo src/service/**/service/__PersonManager.java__. Registra tutti i tuoi file ed aggiusta gli import nei tuoi test. Dopo devi implementare il metodo getPeople() nelle tue classi di implementazione. Apri src/dao/**/dao/hibernate/PersonDaoHibernate.java ed aggiungi il seguente metodo: |
At line 170 changed 1 line. |
You'll notice here that nothing is being done with the ''person'' parameter. This is just a placeholder for now - in the future you may want to filter on it's properties using [Hibernate's Query Language|http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html] (HQL) or using [Criteria Queries|http://www.hibernate.org/hib_docs/reference/en/html/querycriteria.html]. |
Noterai qui che non si fa nulla con il parametro ''person''. Per ora si tratta solo di un segnaposto - in futuro puoi voler filtrare sulle sue proprietà usando l'[Hibernate Query Language|http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html] (HQL) o le [Criteria Queries|http://www.hibernate.org/hib_docs/reference/en/html/querycriteria.html]. |
At line 172 changed 1 line. |
''An example using a Criteria Query:'' |
''Un esempio con uso di Criteria Query:'' |
At line 177 changed 2 lines. |
.excludeZeroes() // exclude zero valued properties |
.ignoreCase(); // perform case insensitive string comparisons |
.excludeZeroes() // escludi proprietà con valore zero |
.ignoreCase(); // esegui confronti fra stringhe case insensitive |
At line 191 changed 1 line. |
Now implement the ''getPeople()'' method in src/service/**/impl/PersonManagerImpl.java: |
Ora implementa il metodo ''getPeople()'' in src/service/**/impl/PersonManagerImpl.java: |
At line 200 changed 1 line. |
After saving all your changes, you should be able to run both tests by executing the following: |
Dopo aver registrato tutte le tue modifiche, dovresti poter lanciare entrambi i test eseguendo quanto segue: |
At line 205 changed 1 line. |
If everything works - ''nice job!'' Now you need to add this ''retrieve all'' functionality to the web tier. |
Se funziona tutto - ''ben fatto!'' Ora devi aggiungere questa funzione ''recupera tutto'' allo strato web. |
At line 208 changed 1 line. |
In the last couple of tutorials, we've been working with the PersonFormController to interact with our HTML form. Now we need to create a new Controller that'll simply handle getting and displaying a list of people in the database. |
Nell'ultimo paio di tutorial, abbiamo lavorato con il PersonFormController per interagire con la nostra form HTML. Ora dobbiamo creare un nuovo Controller che gestirà semplicemente il recupero e la visualizzazione di un elenco di persone da database. |
At line 210 changed 1 line. |
;:''You could also use a [MultiActionController|http://www.springframework.org/docs/api/org/springframework/web/servlet/mvc/multiaction/MultiActionController.html] to handle all your List screens.'' |
;:''Potresti usare anche un [MultiActionController|http://www.springframework.org/docs/api/org/springframework/web/servlet/mvc/multiaction/MultiActionController.html] per gestire tutte le tue schermate elenco.'' |
At line 212 changed 1 line. |
To begin, create test/web/**/action/PersonControllerTest.java (extends BaseControllerTestCase) and add the following method: |
Per iniziare, crea test/web/**/action/PersonControllerTest.java (extends BaseControllerTestCase) ed aggiungi il seguente metodo: |
At line 239 changed 1 line. |
This class will not compile until you (1) create the PersonController class and (2) add the PERSON_LIST variable to the src/dao/**/Constants.java file. Some folks have suggested that this class be named ''PersonControllerList'' - the name choice is up to you. I prefer Controller and FormController because it tells me one implements [Controller|http://www.springframework.org/docs/api/org/springframework/web/servlet/mvc/Controller.html] while the latter extends [SimpleFormController|http://www.springframework.org/docs/api/org/springframework/web/servlet/mvc/SimpleFormController.html]. |
Questa classe non compilerà finché non (1) crei la classe PersonController ed (2) aggiungi la variabile PERSON_LIST al file src/dao/**/Constants.java. Alcuni hanno suggerito di chiamare questa classe ''PersonControllerList'' - a te la scelta del nome. Io preferisco Controller e FormController perché mi dice che una classe implementa [Controller|http://www.springframework.org/docs/api/org/springframework/web/servlet/mvc/Controller.html] mentra la seconda [SimpleFormController|http://www.springframework.org/docs/api/org/springframework/web/servlet/mvc/SimpleFormController.html]. |
At line 241 changed 1 line. |
;:%%(color: blue)''I usually copy a similar variable that already exists in this file - i.e. USER_LIST.'' |
;:%%(color: blue)''Di solito copio una variabile simile già esistente in questo file - i.e. USER_LIST.'' |
At line 246 changed 1 line. |
* The request scope attribute that holds the person list |
* L'attributo in request scope che contiene l'elenco delle persone |
At line 251 changed 1 line. |
Now save all your changes. You won't be able to run __ant test-web -Dtestcase=PersonController__ yet since ''PersonController'' does not exist (yet). Let's add it. |
Ora registra tutte le tue modifiche. Non sarai ancora in grado di lanciare __ant test-web -Dtestcase=PersonController__ in quanto ''PersonController'' non esiste (per ora). Aggiungiamolo. |
At line 304 changed 1 line. |
Ora se esegui __ant test-web -Dtestcase=PersonController__, il test dovrebbe passare. Successivamente, crea il mapping su URL per questo controller. Per fare ciò, cerca il bean "urlMapping" in web/WEB-INF/action-servlet.xml ed aggiungi la riga seguente alla proprietà "mappings": |
Ora se esegui __ant test-web -Dtestcase=PersonController__, il test dovrebbe passare. Successivamente, crea il mapping come URL per questo controller. Per far ciò, cerca il bean "urlMapping" in web/WEB-INF/action-servlet.xml ed aggiungi la riga seguente alla proprietà "mappings": |
At line 312 changed 1 line. |
Apri il file personList.jsp nella cartella ''web/pages'' del tuo progetto. Una cosa che vorrai probabilmente modificare è la forma plurale degli elementi che stai elencando. Il nome generati in questo esempio è "persons" è probabilmente dovrebbe essere people. At or near line 31, you should have the following line: |
Apri il file personList.jsp nella cartella ''web/pages'' del tuo progetto. Una cosa che vorrai probabilmente modificare è la forma plurale degli elementi che stai elencando. Il nome generato in questo esempio è "persons" e probabilmente dovrebbe essere people. Alla riga 31 o lì vicino, dovresti avere quanto segue: |
At line 316 changed 1 line. |
Change it to: |
Modificalo in: |
At line 320 changed 1 line. |
Finally, add the title and heading keys (personList.title and personList.heading) to web/WEB-INF/classes/ApplicationResources.properties. Open this file and add the following: |
Infine, aggiungi le chiavi per titolo ed intestazione (personList.title e personList.heading) a web/WEB-INF/classes/ApplicationResources.properties. Apri questo file ed aggiungi quanto segue: |
At line 328 changed 2 lines. |
As a reminder, the {{personList.title}} is what ends up in the brower's title bar (the <title> tag) and |
{{personList.heading}} will be put into an <h1> tag before any page content. At this point, you could be able to run "ant deploy", start Tomcat and [open the list screen in your browser|http://localhost:8080/appfuse/people.html]. |
Come reminder, {{personList.title}} contiene ciò che finisce nella barra del titolo del browser (il tag <title>) e |
{{personList.heading}} verrà messo in un tag <h1> prima di qualsiasi contenuto della pagina. A questo punto, potresti riuscire ad eseguire "ant deploy", avviare Tomcat ed [aprire la schermata elenco nel tuo browser|http://localhost:8080/appfuse/people.html]. |
At line 331 changed 1 line. |
Now that we have a List Screen, let's change the pages that are displayed after adding and deleting a new Person. In web/WEB-INF/action-servlet.xml, change the personFormController's successView property to be "people.html". |
Ora che abbiamo una schermata elenco, modifichiamo le pagina visualizzate dopo l'aggiunta e l'eliminazione di una Person. In web/WEB-INF/action-servlet.xml, modifica la property successView di personFormController in modo che valga "people.html". |
At line 338 changed 1 line. |
You will also need to update the Canoo tests "AddPerson" and "DeletePerson". Open test/web/web-tests.xml and change the following line in the "AddPerson" target: |
Devi anche aggiornare i test Canoo "AddPerson" e "DeletePerson". Apri test/web/web-tests.xml e modifica la riga seguente nel target "AddPerson": |
At line 343 changed 1 line. |
to: |
in: |
At line 348 changed 1 line. |
Then in the "DeletePerson" target, change the following line: |
Poi nel target "DeletePerson", modifica la riga seguente: |
At line 353 changed 1 line. |
to: |
in: |
At line 357 changed 1 line. |
To test that displaying this page works, you can create a new JSP test in test/web/web-tests.xml: |
Per verificare che la visualizzazione della pagina funzioni, puoi creare una nuovo test JSP in test/web/web-tests.xml: |
At line 377 changed 1 line. |
You'll also want to add the "SearchPeople" target to the "PersonTests" target so it will be executed along with all the other person-related tests. |
Vorrai anche aggiungere il target "SearchPeople" al target "PersonTests" in modo che venga eseguito insieme a tutti gli altri test relativi alle persone. |
At line 382 changed 1 line. |
<!-- runs person-related tests --> |
<!-- esegui i test relativi alle persone --> |
At line 390 changed 1 line. |
Now you can run __ant deploy test-canoo -Dtestcase=SearchPeople__ (or ''ant test-jsp'' if Tomcat isn't running) and hopefully it will result in "BUILD SUCCESSFUL". If so - ''nice work!'' |
Ora puoi eseguire __ant deploy test-canoo -Dtestcase=SearchPeople__ (o ''ant test-jsp'' se Tomcat non è avviato) e se va bene tutto il risultato sarà "BUILD SUCCESSFUL". Se è cosi - ''ottimo lavoro!'' |
At line 392 changed 2 lines. |
!!Add link to menu [#8] |
The last step is to make the list, add, edit and delete functions visible to the user. The simplest way is to add a new link to the list of links in web/pages/mainMenu.jsp: |
!!Aggiungi il link al menu [#8] |
L'ultimo passo è rendere visibili all'utente le funzioni elenco, aggiungi, modifica e cancella. Il modo più semplice è aggiungere un nuovo link all'elenco di link in web/pages/mainMenu.jsp: |
At line 402 changed 1 line. |
Where ''menu.viewPeople'' is an entry in web/WEB-INF/classes/ApplicationResources.properties. |
Dove ''menu.viewPeople'' è una voce in web/WEB-INF/classes/ApplicationResources.properties. |
At line 407 changed 1 line. |
The other (more likely) alternative is that you'll want to add it to the menu. To do this, add the following to web/WEB-INF/menu-config.xml: |
L'altra (più probabile) alternative è che tu voglia aggiungerlo al menu. Per farlo, aggiungi quanto segue a web/WEB-INF/menu-config.xml: |
At line 414 changed 1 line. |
Make sure the above XML is inside the <Menus> tag, but not within another <Menu>. Then add this new menu to web/common/menu.jsp - which should now looks as follows: |
Assicurati che l'XML sopra sia all'interno del tag <Menus>, ma non dentro un altro tag <Menu>. Poi aggiungi questo nuovo menu a web/common/menu.jsp - che ora dovrebbe vedersi come segue: |
At line 432 changed 1 line. |
Now if you run __ant clean deploy__, start Tomcat and go to [http://localhost:8080/appfuse/mainMenu.html], you should see something like the screenshot below. |
Se ora esegui __ant clean deploy__, avvii Tomcat e vai su [http://localhost:8080/appfuse/mainMenu.html], dovresti vedere qualcosa di analogo allo screenshot sotto. |
At line 438 changed 1 line. |
Notice that there is a new link on the left side (from mainMenu.jsp) and on the right in our menu (from menu.jsp). |
Nota che c'è un nuovo link sul lato sinistro (da mainMenu.jsp) a sulla destra nel nostro menu (da menu.jsp). |
At line 440 changed 2 lines. |
!!That's it! |
You've completed the full lifecycle of developing a set of master-detail pages with AppFuse and Spring's MVC framework - __Congratulations__! Now the real test is if you can run all the tests in your app without failure. To test, stop tomcat and run __ant clean test-all__. This will run all the unit tests within your project. As a reminder, it should be easy to setup and test AppFuse from scratch using __ant setup-db setup-tomcat test-all__. Also, if you're looking for more robust examples - checkout [Struts Resume|StrutsResume]. |
!!È tutto! |
Hai completato un ciclo di sviluppo intero di un insieme di pagine master-detail con AppFuse e il framework MVC di Spring - __Congratulazioni__! Ora il test vero è se puoi eseguire tutti i test nella tua applicazione senza che falliscano. Per verificare, ferma tomcat ed esegui __ant clean test-all__. Ciò esegue tutti gli unit test all'interno del progetto. Come promemoria, dovrebbe essere semplice impostare e testare AppFuse da zero usando __ant setup-db setup-tomcat test-all__. Inoltre, se stai cercando degli esempi più consistenti - guarda [Struts Resume|StrutsResume]. |
At line 443 changed 1 line. |
''__Happy Day!__'' |
''__Buona Giornata!__'' |