title: Different request types: trait Request takes type parameters
body: <p>I tried to duplicate the example given in the documentation for Play 2.2.1:</p>
  
  <p><a href="http://www.playframework.com/documentation/2.2.1/ScalaActionsComposition" rel="nofollow">http://www.playframework.com/documentation/2.2.1/ScalaActionsComposition</a></p>
  
  <pre><code>import play.api.mvc._
  
  class RequestWithItem[A](val item: Item, request: Request[A])
  extends WrappedRequest[A](request)
  
  def ItemAction(itemId: String) = new ActionBuilder[RequestWithItem] {
    def invokeBlock[A](request: Request[A], block: (RequestWithItem[A]) =&gt; Future[SimpleResult]) = {
      ItemDao.findById(itemId).map { item =&gt;
        block(new RequestWithItem(item, request))
      } getOrElse {
        Future.successful(NotFound)
      }
    }
  }
  
  def tagItem(itemId: String, tag: String) = ItemAction(itemId) { request =&gt;
    request.item.addTag(tag)
    Ok
  }
  </code></pre>
  
  <p>but I get the compile error: </p>
  
  <pre><code>trait Request takes type parameters
  </code></pre>
  
  <p>for the <code>request.item.addTag(tag)</code> method.</p>
  
  <p>What would the type parameters be exactly?</p>