sabato 2 marzo 2013

[Java] valore null con intero

Usando struts mi è servito impostare il valore null su un intero, in modo poter efficacemente usare il metodo reset() di un ActionForm() che riflette totalmente un Bean.

Ho usato questo "stratagemma":

int dichiarato come Integer.

Integer = null;

se lo stampate però ricevete il valore 0... così è sufficiente:

interoDelActionForm().toString();

rende un NullPointerException se null, gestibile facilmente a questo punto con un try/ catch

mercoledì 11 luglio 2012

Tomcat e JBoss insieme

Può capitare di dover utilizzare web servers diversi per la gestione di una web application.

Questo esempio prende in considerazione JBoss 6.1.0 (l'ultima versione di JBoss supportata da Netbeans) come EJB Server, e Tomcat 6.0.x come Web Server ( Tomcat è molto più leggero ma non è in grado di gestire gli EJB ).

Il problema principale è far comunicare i due Server, problema che può essere risolto così:

1) Innanzitutto le interfacce dei beans in JBoss devono essere dichiarate come remote

2) E' necessario importare determinate librerie in Tomcat, in modo che capisca come comunicare con JBoss. Tra queste c'è sicuramente il progetto dell'EJB Server; cosa molto facile con netbeans : Tasto destro sull'applicazione del web server > proprietà > libraries > add project.
Le altre fanno riferimento ad alcuni Jar di JBoss:

/client/jboss-client.jar
/client/jboss-common-core.jar
/client/jbossall-client.jar
/client/jnp-client.jar
/lib/jboss-loggin

3) Bisogna richiamare i bean remoti. Per semplicità potete creare una classe Utitlity che abbia un metodo simile:

    public Object callRemoteBean(String name) throws NamingException {
        Properties props = new Properties();
        props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
        props.setProperty("java.naming.provider.url", "jnp://localhost:1099");
        props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
        InitialContext ctx = new InitialContext(props);
        return ctx.lookup(name);

e a questo punto per richiamare il gestore di bean associato:

NomeBeanFacadeRemote nomeBeanFacade = (NomeBeanFacadeRemote) utility.callRemoteBean("NomeBeanFacade/remote");

e poi


nomeBeanFacade.find(idBean);

venerdì 6 luglio 2012

[Java] Conteggio di date e giorni lavorativi

Innanzitutto lasciamo perdere le classi Calendar e GregorianCalendar, e usiamo solamente JodaTime.

La mia situazione di partenza è una data salvata in un database (class Date), a cui devo aggiungere alcuni giorni lavorativi.
Converto Date a DateTime (package JodaTime), ecco la funzione che fa a caso nostro, prendendo in considerazione solamente i giorni dal lunedì al venerdì:

    public DateTime addLavorativeDays (DateTime startDate, int lavorativeDays){
       
       
        while (lavorativeDays>0){
           
            System.out.println(startDate.getDayOfWeek());
           
            if (startDate.getDayOfWeek()<6){
               
                startDate = startDate.plusDays(1);
                lavorativeDays--;
            }
            else {
               
                startDate = startDate.plusDays(1);
            }
           
           
        }
        return startDate;
    }

Un controllo utile è sicuramente quello che date 2 date (inizio-fine) ci riporta il numero di giorni lavorativi:


    public int returnWeeklyDays(DateTime first, DateTime second){
       
       int days=0;
       
        while ((Days.daysBetween(first, second)).getDays()!=0){
           
            if (first.getDayOfWeek()<6){
               
                days++;
            }
            first = first.plusDays(1);
       
        }
       
        return days;
    }

venerdì 29 giugno 2012

Button submit image html, struts

<td><input type="image" value="submit" src="/DGestWebServer/images/add.png" width="20" height="20" border="0" alt="SUBMIT!" name="image"> </td>

martedì 12 giugno 2012

[JAVASCRIPT-AJAX] inviare richieste post


 Doppia funzione per inviare richieste POST con JS-AJAX

in url c'è il link a partire dalla root della mia pagina che accetta le richieste
In data ci sono le mie variabili post da inviare


function richiesta(id,tabella){
 // link alla pagina dimanica che opera
  var  url='pages/pagina_richieste_js.php?action=attivita';
  var data="id="+id+"&tabella="+tabella;
 var risposta=invia_richiesta(url, data) ;

 }
// comando che effettua la chiamata alla nostra pagina
function invia_richiesta(url,data){
      var call = $.ajax({
         type: "POST",
         url: url,
                 data: data,
         async: false
        }).responseText;
                return call;
}

venerdì 8 giugno 2012

[JAVA] Download di file da un server con FileInputStream


String path = this.getServlet().getServletContext().getRealPath("/folder" + filename);
           
           
            FileInputStream inputStream = new FileInputStream(path);

            response.setHeader("Content-Disposition","attachment; filename="+filename);
            try {
                int c;
                while ((c = inputStream.read()) != -1) {
                response.getWriter().write(c);
                }
            } finally {
                if (inputStream != null)
                    inputStream.close();
                    response.getWriter().close();
            }

[JS] Come creare una classe javascript



Di seguito un esempio di creazione della classe per js

<script>
  var class_funct = new function (){
   var this.funzione_1 =  function (var1,var2){
 
    alert(var1+" | "+var2);

  }
 }
</script>


Come richiamare la funzione

<a onclick='class_funct.funzione_1(1,2)'></a>

Baci, abbracci dal C....