jsf托管bean可以像servlet一样运行吗?(Can a jsf managed bean behave like a servlet?)
通常,servlet具有
doGet()
和doPost()
方法。 它们用于捕获传入的request parameters
,如果开发人员愿意,可以在应用程序的任何部分使用它们。现在,如果不是使用servlet,开发人员希望使用
jsf managed bean
,有没有办法在bean本身中获取请求参数? 如果是这样,怎么办呢?我看过这个POST ,它显示了一种从JSF中获取请求的方法。 这可以用于在托管bean中获取请求参数,如下所示:
HttpServletRequest origRequest = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); String myReqQuery1 = origRequest.getParameter("ReqQuery1");
在这种情况下,应用程序是遵循
jsf life cycle
还是servlet life cycle
或两者兼而有之?Normally, a servlet has
doGet()
anddoPost()
methods. They are utilized to capture the incomingrequest parameters
, which can then be used in any part of the application, if the developer wishes so.Now, If instead of using a servlet, a developer wishes to use a
jsf managed bean
, is there a way to get the request parameters in the bean itself ? If so , how can it be done ?I have seen this POST which shows a way of getting stuff from request in JSF. Can this be used to get a request parameter in managed bean like this :
HttpServletRequest origRequest = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); String myReqQuery1 = origRequest.getParameter("ReqQuery1");
In this case, will the application follow a
jsf life cycle
or aservlet life cycle
or both ?
原文:https://stackoverflow.com/questions/21881686
最满意答案
据我了解你的要求,你想
- 从
m1
生成一些键序列。- 在
m2
中,将这些键序列中的每一个与特定的常数值相关联。第一步是对
m1
进行相当简单的转换。 我们希望为每个条目生成0个或更多的key-seq (取决于它的集合中有多少个),所以对我来说,自然是mapcat
。 它代表map
-then-concat
,对于这样的情况来说非常好,即从seq的每个元素中我们生成0个或更多的元素。(defn key-seqs [coll] (mapcat (fn [[k v]] (map (partial vector k) v)) coll)) (key-seqs m1) ;;=> ([:1 2] [:2 1] [:2 3] [:3 1])
请注意,
mapcat
采用的函数本身就是一个map
,因此它会为mapcat
展开序列 (可能为空)。 但这会将存储在集合中的长点作为自己返回。 如果我们想将它们变成匹配m2
关键字,我们需要更多的处理:(defn key-seqs [coll] (mapcat (fn [[k v]] (map (comp (partial vector k) keyword str) v)) coll)) (key-seqs m1) ;;=> ([:1 :2] [:2 :1] [:2 :3] [:3 :1])
(我们需要使用
str
因为keyword
不知道如何处理long。通常关键字不是数字,而是具有一些符号含义的名称)然后我们可以适应先前问题中的
update-m
一点,以便它可以将常量值作为参数,并处理不仅具有相同值两次的键序列:(defn update-m [m x v] (reduce (fn [m' key-seq] (assoc-in m' key-seq x)) ;; accumulate changes m ;; initial-value v)) ;; collection to loop over
现在我们似乎在做生意:
(update-m m2 1 (key-seqs m1)) ;;=> {:1 {:1 0, :2 1, :3 23}, :2 {:1 1, :2 0, :3 1}, :3 {:1 1, :2 4, :3 0}}
As I understand your requirements you want to
- Produce a number of key-sequences from
m1
.- In
m2
associate each of those key-sequences with a particular constant value.The first step is a fairly simple transformation of
m1
. We want to produce 0 or more key-seqs for each entry (depending on how many are in its set), so the natural go-to for me ismapcat
. It stands formap
-then-concat
and is great for just such a case where from each element of a seq we produce 0 or more of the elements we want.(defn key-seqs [coll] (mapcat (fn [[k v]] (map (partial vector k) v)) coll)) (key-seqs m1) ;;=> ([:1 2] [:2 1] [:2 3] [:3 1])
Note that the function taken by
mapcat
is itself amap
, so that it produces a sequence (possibly empty) formapcat
to unroll. But this is returning the longs stored in the sets as themselves. If we want to turn them into keywords to matchm2
we need a little more processing:(defn key-seqs [coll] (mapcat (fn [[k v]] (map (comp (partial vector k) keyword str) v)) coll)) (key-seqs m1) ;;=> ([:1 :2] [:2 :1] [:2 :3] [:3 :1])
(We need to use
str
becausekeyword
doesn't know what to do with longs. Normally keywords are not numbers, but names with some symbolic meaning)Then we can adapt the
update-m
from your previous question a little bit so that it can take the constant value as an argument and handle key-sequences that don't just have the same value twice:(defn update-m [m x v] (reduce (fn [m' key-seq] (assoc-in m' key-seq x)) ;; accumulate changes m ;; initial-value v)) ;; collection to loop over
and now we seem to be in business:
(update-m m2 1 (key-seqs m1)) ;;=> {:1 {:1 0, :2 1, :3 23}, :2 {:1 1, :2 0, :3 1}, :3 {:1 1, :2 4, :3 0}}
相关问答
更多-
Map迭代问题(Trouble with Map iterate)[2022-11-12]
我怀疑您希望键1,2和3在map1可用。 问题是您重复使用了相同的map map1 ,并将其插入到map2两次。 因此map1上所有操作的累积结果是地图中只有4,5和6。 视觉: /1 ====v map2 map1 -> (4 => 4.4), (5 => 5.5), (6 => 6.6) \2 ====^ 要获得两个不同的地图,请在第一次插入后清除map1 ,创建一个新地图。 更换 map1.clear(); 同 map1 = new HashMap迭代地图中的地图(iterate over map within map)[2022-05-19]
#include你去那里:你的filmCollection应该是一个Map> Map > filmCollection = new HashMap<>(); Actor a1 = new Actor("Joe Smith", "20071977"); Actor a2 = new Actor("Kate Jones", "01011980"); Actor a3 = new Actor("Frank DeFrank", "02021945"); Se ... 如何迭代集合的散列(How to iterate over a hash of sets)[2022-11-23]
Set似乎使这个奇怪,或者它只是@match_data对象的布局。 无论如何,必须对每个玩家及其相应的集合应用此功能。 它还需要您将匹配数据传递给它: def compile_sets(set, data, results = Set.new) set.each do |s| results << s results << compile_sets(data[s], data, results) end results.flatten end 用法示例: results = @ ...据我了解你的要求,你想 从m1生成一些键序列。 在m2中,将这些键序列中的每一个与特定的常数值相关联。 第一步是对m1进行相当简单的转换。 我们希望为每个条目生成0个或更多的key-seq (取决于它的集合中有多少个),所以对我来说,自然是mapcat 。 它代表map -then- concat ,对于这样的情况来说非常好,即从seq的每个元素中我们生成0个或更多的元素。 (defn key-seqs [coll] (mapcat (fn [[k v]] (map (partial ...如何根据唯一值在clojure中映射2组中的不同值(How to map different values from 2 sets in clojure based on unique value)[2022-03-25]
更新2016-9-26 1727:我添加了一个更好的解决方案,它使用DataScript来完成所有艰苦的工作。 请在最后查看其他解决方案。 这是一个适用的答案(不包括DataScript): (ns clj.core (:require [tupelo.core :as t] [clojure.set :as set] )) (t/refer-tupelo) (def x [ {:id 1, :obs/A "11", :obs/value 2.0, :ob ...你可以这样做: templatevoid iterate(std::set & s1, std::set & s2, D d) { auto it1 = s1.begin(); auto it2 = s2.begin(); while (it1 != s1.end() && it2 != s2.end()) { if (*it1 < *it2) { // only in set1 ... 解决这种映射映射问题的一种流行方法是使用zipmap : (defn map-vals "Returns the map with f applied to each item." [f m] (zipmap (keys m) (map f (vals m)))) (defn update-task-durations [tasks] (let [update-duration (fn [duration] (if ...你怎么在clojure中通过键找到交集的地图?(How do you find the intersection of sets of maps by key in clojure?)[2021-07-04]
编辑:我以前错误地假设地图具有相同的:id保证具有相同的键和值。 如果允许它们不同,这是一个更好的答案: (defn intersect-by [key-fn data] (let [normalized (map (fn [map-data] (->> map-data (group-by key-fn) (map (fn [[ ...我们可以使用map为集合的每个索引构造一个哈希映射。 当提供两个以上的参数时,map会并行移动所有集合。 user> (let [dates '("Aujourd'hui" "Demain" "25.11" "26.11" "27.11" "28.11" "29.11") mins '("2 °C" "2 °C" "1 °C" "0 °C" "-3 °C" "-4 °C" "0 °C") maxes '("8 °C" "6 °C" "4 °C" "2 °C ...相关文章
更多- JSF托管bean(Managed Bean)
- JSF托管Bean
- JSF快速入门示例
- 【第十章】集成其它Web框架 之 10.4 集成JSF ——跟我学spring3
- Hibernate 异常之:associate a collection with two ...
- seam+jsf问题
- Fading Like a Flower - Roxette
- JSP 结构与servlet的关系
- maven项目使用SOLR时报 previously initiated loading for a different type with name "javax/servlet/http/HttpServletRequest" 错的解决方法
- Spring4新特性——Groovy Bean定义DSL
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)