a little Howto get the values of a form you just submitted
my form will be composed only with one field ; a select multiple ; to see how to get the choosen values.
the little piece of xsl :
<form action="fox.xml" method="post"> <fieldset><legend>Players</legend> <select name="player_url_name[]" multiple="multiple"> <option value="Player1">The is the Player1</option><br/> <option value="Player2">The is the Player2</option><br/> <option value="Player3">The is the Player3</option><br/> </select> </fieldset> <fieldset><legend>Valid</legend <input type="submit" value="ok" name="valid"/> </fieldset> </form>
the pipeline in the sitemap.xmap :
<map:match pattern="fox.xml"> <map:generate type="script" src="fox.groovy"/> <map:serialize type="xml"/> </map:match>
the groovy script fox.groovy :
import org.apache.cocoon.environment.ObjectModelHelper import groovy.xml.SAXBuilder // get the parameters from the form objectModel = bsf.lookupBean("objectModel"); request = ObjectModelHelper.getRequest(objectModel); player_url_name = request.getParameterValues("player_url_name[]"); // Create a Groovy Builder which writes directly to // the Cocoon pipeline contentHandler = bsf.lookupBean("contentHandler") xml = new SAXBuilder(contentHandler) // Builder does not seem to call this contentHandler.startDocument() xml.root() { foxyz() { // loop in the array and make my appropriate node for ( i in player_url_name ) { player("${i}") } } } contentHandler.endDocument()
the generating xml output after choosing all the players :
<?xml version="1.0" encoding="ISO-8859-1"?> <root> <foxyz> <player>Player1</player> <player>Player2</player> <player>Player3</player> </foxyz> </root>
Thanks to Bertrand Delacretaz for his help about bsf.lookupBean
– olivier demah –