I have the following XML literal:
<input type='radio'
       name={funcName}
       value='true' />
I'd like to include checked='checked' if cond is true.
I've tried this,
<input type='radio'
       name={funcName}
       value='true'
       { if (cond) "checked='checked'" else "" } />
but it doesn't work.
(I'd really like to avoid repeating the whole tag.)
Option also works, which reduces unnecessary use of null:
scala> val checked:Option[xml.Text] = None
checked: Option[scala.xml.Text] = None
scala> val xml = <input checked={checked} />
xml: scala.xml.Elem = <input ></input>
                        If you want to add the attribute only when checked, you can add it after using Scala XML API:
import scala.xml._
val snippet = {
  val x = <input type='radio'
                 name={funcName}
                 value='true' />
  if( cond ) {
    x % new UnprefixedAttribute("checked","checked",Null)
  } else x
}
                        Believe it or not, you can do it like this:
<input type='radio'
       name={funcName}
       value='true'
       checked={ if (cond) "checked" else null } />
This is one of the dark parts of Scala where null actually gets used.
Just to make clear, it does exactly what you want: if cond is false, then input will have no checked attribute.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With