2011-02-07 13 views
5

Desidero eseguire il rendering utilizzando Richfaces un menu di scelta rapida facendo clic con il tasto sinistro su un testo che visualizza il collegamento (testo blu e sottolineato e cursore sumouseover). Quindi, immagina un collegamento che, quando cliccato, mostra un menu contestuale. Si noti che non mi interessa se il testo è davvero un link, voglio solo che a compaia come link. Quindi, anche il testo normale andrebbe bene, lo farei apparire come un collegamento usando i CSS.Richfaces: testo simile a un collegamento con ContextMenu

ho le seguenti condizioni:

  • Il menu di contesto deve apparire sul lato client, senza fare una richiesta.
  • Il menu di scelta rapida deve essere visualizzato utilizzando uno rich:componentControl (questi "collegamenti") si trovano all'interno di un datatable, pertanto è necessario riutilizzare lo stesso rich:contextMenu.

non ho ancora trovato una soluzione soddisfacente, in quanto ogni approccio che ho provato ha causato un problema per me:

  1. Se uso h:outputText (che sarebbe l'ideale), non riesco a collegare su di esso a rich:componentControl (Immagino perché non può sparare un evento onclick).
  2. Se utilizzo a4j:commandLink, sebbene I possa allegare un rich:componentControl, effettua una richiesta server. Ho cercato di aggiungere onclick="return false;" per impedire la richiesta, ma Richfaces aggiunge il JS generato dallo rich:componentControldopo qualsiasi cosa si trovi all'interno del onclick, il che fa sì che questo codice non venga raggiunto affatto, e ovviamente il menu di scelta rapida non deve apparire affatto .

C'è un modo per farlo? Per favore ricorda, nessuna richiesta!

risposta

2

Puoi provare

<rich:componentControl disableDefault="true" ...> 

Secondo la documentazione con questo param componentControl dovrebbe aggiungere return false; stessa.

Ma essere a conoscenza di corrispondenti bug: RF-5607

Nella documentazione caso si trova è possibile utilizzare le ancore html. This answer mostra come creare un legame con componentControl e senza refresh di pagina:

<h:outputLink value="#" id="link" onclick="return false;"> 
    <h:outputText value="Link text"/> 
    <rich:componentControl attachTo="link" for="panel" operation="show" event="onclick"/> 
</h:outputLink> 

Il onclick="return false;" impedisce l'ancora dal scorrendo la pagina al link cliccato.

+0

Grazie per la risposta. Ho impostato disableDefault = "true", ma sfortunatamente la richiesta POST ha luogo come prima. (+1) –

+0

La risposta aggiornata funziona per me. –