I’m wondering how I can populate a text box in my view from a list in my controller, I have been searching for examples for awhile, but haven’t really found anything. I’m uncertain on how to access the text field from the view exactly, where as in Java you could do something as simple as jTextField.getText(). I’m also wondering on how to grab the text in my text box as well.
Below I’ll post some example code of what I’m doing.
Controller:
def loadFile = {
def propFile = "c:/props.txt"
def propMap = [:]
def propList = []
new File(propFile).eachLine { line ->
def (key,value) = line.split(':').collect { it.trim() }
propMap."$key" = "$value"
if(propMap) {
propList << propMap
propMap = [:]
}
}
}
def saveFile = {
//get contents of text box
//over-write props.txt with new information
}
View:
<g:textField name="properties"/>
<span class="menuButton"/><g:link action="loadFile" controller="myController">Load File</g:link>
<span class="menuButton"/><g:link action="saveFile" controller="myController">Save File</g:link>
So, my question seems relatively straight forward, how do I access the text box when I want to populate it and save the data from it?
.
.
.
EDIT
After checking out some of the examples submitted by you guys, I have one last question.
Why does the following code act different when clicking the Load File button?
<g:form controller="drive">
<g:textArea name="properties" value="${params.param1}" rows="50" cols="6"/>
<br/>
<g:submitButton name="loadFile" value="Load File"/>
<g:submitButton name="saveFile" value="Save File"/>
</g:form>
<span class="menuButton"/><g:link action="loadFile" controller="drive">Load File</g:link>
When clicking the g:submitButton dealing with loadFile it redirects me to the list gsp. However, when I click the menuButton it loads the textArea with the text from the file. The reason I ask is because with the second option, the button isn’t located where I would like it to be.
Wrap your text field in form tag. This way, when you submit it, you can access your field in controller.
Then, you can access your
propertiesfield in controller:EDIT:
To address some of the issues that came up later in comments, I’ll try to provide some more insight.
Let’s assume that your controller is called
Driveand view (the form to submit properties) isdrive/properties.gsp. If want your load button to load your properties into the text area, you can do something like this:And in your view:
This should render your form with values from your file, each property in new line. But I didn’t test it.